From 57616032650f03840480b696d7878acdd2065521 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 30 Mar 2017 18:58:18 +0300 Subject: 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(-) diff --git a/src/liblzma/api/lzma/index.h b/src/liblzma/api/lzma/index.h index dda60ec1..3dac6fb8 100644 --- a/src/liblzma/api/lzma/index.h +++ b/src/liblzma/api/lzma/index.h @@ -586,8 +586,7 @@ extern LZMA_API(lzma_index *) lzma_index_dup( * \param i Pointer to lzma_index which should be encoded. * * 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; use LZMA_RUN - * to support liblzma versions older than 5.0.0). + * It is enough to use only one of them (you can choose freely). * * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). * - LZMA_MEM_ERROR @@ -610,16 +609,21 @@ extern LZMA_API(lzma_ret) lzma_index_encoder( * to a new lzma_index, which the application * has to later free with lzma_index_end(). * \param memlimit How much memory the resulting lzma_index is - * allowed to require. + * allowed to require. 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. * - * 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; use LZMA_RUN - * to support liblzma versions older than 5.0.0). + * 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: Initialization succeeded, continue with lzma_code(). * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR * - LZMA_PROG_ERROR + * + * liblzma 5.2.3 and older list also LZMA_MEMLIMIT_ERROR here + * but that error code has never been possible from this + * initialization function. */ extern LZMA_API(lzma_ret) lzma_index_decoder( lzma_stream *strm, lzma_index **i, uint64_t memlimit) diff --git a/src/liblzma/common/index_decoder.c b/src/liblzma/common/index_decoder.c index 1e33f0b0..cc07a1b8 100644 --- a/src/liblzma/common/index_decoder.c +++ b/src/liblzma/common/index_decoder.c @@ -256,7 +256,7 @@ index_decoder_reset(lzma_index_coder *coder, const lzma_allocator *allocator, // Initialize the rest. coder->sequence = SEQ_INDICATOR; - coder->memlimit = memlimit; + coder->memlimit = my_max(1, memlimit); coder->count = 0; // Needs to be initialized due to _memconfig(). coder->pos = 0; coder->crc32 = 0; @@ -271,7 +271,7 @@ index_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, { lzma_next_coder_init(&index_decoder_init, next, allocator); - if (i == NULL || memlimit == 0) + if (i == NULL) return LZMA_PROG_ERROR; lzma_index_coder *coder = next->coder; -- cgit v1.2.3 From ef36c6362f3f3853f21b8a6359bcd06576ebf207 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 30 Mar 2017 19:16:55 +0300 Subject: 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(-) diff --git a/src/liblzma/api/lzma/container.h b/src/liblzma/api/lzma/container.h index 86991add..9fbf4df0 100644 --- a/src/liblzma/api/lzma/container.h +++ b/src/liblzma/api/lzma/container.h @@ -520,7 +520,10 @@ extern LZMA_API(lzma_ret) lzma_stream_buffer_encode( * * \param strm Pointer to properly prepared lzma_stream * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. + * 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 zero or more of the decoder flags: * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, * LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED @@ -544,7 +547,10 @@ extern LZMA_API(lzma_ret) lzma_stream_decoder( * * \param strm Pointer to properly prepared lzma_stream * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. + * 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. * * \return - LZMA_OK: Initialization was successful. @@ -560,9 +566,16 @@ extern LZMA_API(lzma_ret) lzma_auto_decoder( /** * \brief Initialize .lzma decoder (legacy file format) * + * \param strm Pointer to properly prepared lzma_stream + * \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 allowing it may simplify - * certain types of applications. + * There is no need to use LZMA_FINISH, but it's allowed because it may + * simplify certain types of applications. * * \return - LZMA_OK * - LZMA_MEM_ERROR diff --git a/src/liblzma/common/alone_decoder.c b/src/liblzma/common/alone_decoder.c index dd681765..77d0a9b1 100644 --- a/src/liblzma/common/alone_decoder.c +++ b/src/liblzma/common/alone_decoder.c @@ -203,9 +203,6 @@ lzma_alone_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, { lzma_next_coder_init(&lzma_alone_decoder_init, next, allocator); - if (memlimit == 0) - return LZMA_PROG_ERROR; - lzma_alone_coder *coder = next->coder; if (coder == NULL) { @@ -227,7 +224,7 @@ lzma_alone_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, coder->options.preset_dict = NULL; coder->options.preset_dict_size = 0; coder->uncompressed_size = 0; - coder->memlimit = memlimit; + coder->memlimit = my_max(1, memlimit); coder->memusage = LZMA_MEMUSAGE_BASE; return LZMA_OK; diff --git a/src/liblzma/common/auto_decoder.c b/src/liblzma/common/auto_decoder.c index 09acd6dc..479b150f 100644 --- a/src/liblzma/common/auto_decoder.c +++ b/src/liblzma/common/auto_decoder.c @@ -155,9 +155,6 @@ auto_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, { lzma_next_coder_init(&auto_decoder_init, next, allocator); - if (memlimit == 0) - return LZMA_PROG_ERROR; - if (flags & ~LZMA_SUPPORTED_FLAGS) return LZMA_OPTIONS_ERROR; @@ -175,7 +172,7 @@ auto_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, coder->next = LZMA_NEXT_CODER_INIT; } - coder->memlimit = memlimit; + coder->memlimit = my_max(1, memlimit); coder->flags = flags; coder->sequence = SEQ_INIT; diff --git a/src/liblzma/common/stream_decoder.c b/src/liblzma/common/stream_decoder.c index 7ae7a670..fdd8ff2f 100644 --- a/src/liblzma/common/stream_decoder.c +++ b/src/liblzma/common/stream_decoder.c @@ -422,9 +422,6 @@ lzma_stream_decoder_init( { lzma_next_coder_init(&lzma_stream_decoder_init, next, allocator); - if (memlimit == 0) - return LZMA_PROG_ERROR; - if (flags & ~LZMA_SUPPORTED_FLAGS) return LZMA_OPTIONS_ERROR; @@ -444,7 +441,7 @@ lzma_stream_decoder_init( coder->index_hash = NULL; } - coder->memlimit = memlimit; + coder->memlimit = my_max(1, memlimit); coder->memusage = LZMA_MEMUSAGE_BASE; coder->tell_no_check = (flags & LZMA_TELL_NO_CHECK) != 0; coder->tell_unsupported_check -- cgit v1.2.3 From eb25743ade39170cffd9566a1aae272098cce216 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 30 Mar 2017 19:47:45 +0300 Subject: 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(-) diff --git a/src/liblzma/api/lzma/base.h b/src/liblzma/api/lzma/base.h index 7a31a420..a6005acc 100644 --- a/src/liblzma/api/lzma/base.h +++ b/src/liblzma/api/lzma/base.h @@ -644,11 +644,16 @@ extern LZMA_API(uint64_t) lzma_memlimit_get(const lzma_stream *strm) * This function is supported only when *strm has been initialized with * a function that takes a memlimit argument. * + * liblzma 5.2.3 and earlier has a bug where memlimit value of 0 causes + * this function to do nothing (leaving the limit unchanged) and still + * 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. * - LZMA_MEMLIMIT_ERROR: The new limit is too small. * The limit was not changed. * - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't - * support memory usage limit or memlimit was zero. + * support memory usage limit. */ extern LZMA_API(lzma_ret) lzma_memlimit_set( lzma_stream *strm, uint64_t memlimit) lzma_nothrow; diff --git a/src/liblzma/common/auto_decoder.c b/src/liblzma/common/auto_decoder.c index 479b150f..6895c7cc 100644 --- a/src/liblzma/common/auto_decoder.c +++ b/src/liblzma/common/auto_decoder.c @@ -139,7 +139,10 @@ auto_decoder_memconfig(void *coder_ptr, uint64_t *memusage, // the current memory usage. *memusage = LZMA_MEMUSAGE_BASE; *old_memlimit = coder->memlimit; + ret = LZMA_OK; + if (new_memlimit != 0 && new_memlimit < *memusage) + ret = LZMA_MEMLIMIT_ERROR; } if (ret == LZMA_OK && new_memlimit != 0) diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c index 28aa2b71..57e3f8eb 100644 --- a/src/liblzma/common/common.c +++ b/src/liblzma/common/common.c @@ -435,8 +435,10 @@ lzma_memlimit_set(lzma_stream *strm, uint64_t new_memlimit) || strm->internal->next.memconfig == NULL) return LZMA_PROG_ERROR; - if (new_memlimit != 0 && new_memlimit < LZMA_MEMUSAGE_BASE) - return LZMA_MEMLIMIT_ERROR; + // Zero is a special value that cannot be used as an actual limit. + // If 0 was specified, use 1 instead. + if (new_memlimit == 0) + new_memlimit = 1; return strm->internal->next.memconfig(strm->internal->next.coder, &memusage, &old_memlimit, new_memlimit); -- cgit v1.2.3 From 2a4b2fa75d06a097261a02ecd3cf2b6d449bf754 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 30 Mar 2017 22:01:54 +0300 Subject: 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(-) diff --git a/src/xz/file_io.c b/src/xz/file_io.c index c01f4e8b..041bed88 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -525,7 +525,10 @@ io_open_src_real(file_pair *pair) #endif #ifdef HAVE_POSIX_FADVISE // It will fail if stdin is a pipe and that's fine. - (void)posix_fadvise(STDIN_FILENO, 0, 0, POSIX_FADV_SEQUENTIAL); + (void)posix_fadvise(STDIN_FILENO, 0, 0, + opt_mode == MODE_LIST + ? POSIX_FADV_RANDOM + : POSIX_FADV_SEQUENTIAL); #endif return false; } @@ -716,7 +719,10 @@ io_open_src_real(file_pair *pair) #ifdef HAVE_POSIX_FADVISE // It will fail with some special files like FIFOs but that is fine. - (void)posix_fadvise(pair->src_fd, 0, 0, POSIX_FADV_SEQUENTIAL); + (void)posix_fadvise(pair->src_fd, 0, 0, + opt_mode == MODE_LIST + ? POSIX_FADV_RANDOM + : POSIX_FADV_SEQUENTIAL); #endif return false; -- cgit v1.2.3 From 70f479211973b5361f4d7cb08ba5be69b4266e7a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 19 Apr 2017 22:17:35 +0300 Subject: 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(-) diff --git a/COPYING b/COPYING index 43c90d05..20e60d5b 100644 --- a/COPYING +++ b/COPYING @@ -47,7 +47,7 @@ XZ Utils Licensing naturally it is not legally required. Here is an example of a good notice to put into "about box" or into documentation: - This software includes code from XZ Utils . + This software includes code from XZ Utils . The following license texts are included in the following files: - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1 diff --git a/README b/README index ab8aadfb..720a1a58 100644 --- a/README +++ b/README @@ -291,7 +291,7 @@ XZ Utils XZ Embedded is a limited implementation written for use in the Linux kernel, but it is also suitable for other embedded use. - http://tukaani.org/xz/embedded.html + https://tukaani.org/xz/embedded.html 6. Contact information diff --git a/configure.ac b/configure.ac index 81f445e6..c4f8a4cc 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ AC_PREREQ([2.64]) AC_INIT([XZ Utils], m4_esyscmd([/bin/sh build-aux/version.sh]), - [lasse.collin@tukaani.org], [xz], [http://tukaani.org/xz/]) + [lasse.collin@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]) diff --git a/doc/faq.txt b/doc/faq.txt index 333bee09..dee7824f 100644 --- a/doc/faq.txt +++ b/doc/faq.txt @@ -206,7 +206,7 @@ Q: How do I build a program that needs liblzmadec (lzmadec.h)? A: liblzmadec is part of LZMA Utils. XZ Utils has liblzma, but no liblzmadec. The code using liblzmadec should be ported to use liblzma instead. If you cannot or don't want to do that, download - LZMA Utils from . + LZMA Utils from . Q: The default build of liblzma is too big. How can I make it smaller? @@ -220,5 +220,5 @@ A: Give --enable-small to the configure script. Use also appropriate If the result is still too big, take a look at XZ Embedded. It is a separate project, which provides a limited but significantly smaller XZ decoder implementation than XZ Utils. You can find it - at . + at . diff --git a/dos/config.h b/dos/config.h index 725cb8ec..7a385e10 100644 --- a/dos/config.h +++ b/dos/config.h @@ -126,7 +126,7 @@ #define PACKAGE_NAME "XZ Utils" /* Define to the home page for this package. */ -#define PACKAGE_URL "http://tukaani.org/xz/" +#define PACKAGE_URL "https://tukaani.org/xz/" /* The size of `size_t', as computed by sizeof. */ #define SIZEOF_SIZE_T 4 diff --git a/src/common/common_w32res.rc b/src/common/common_w32res.rc index fdb88d18..a70de343 100644 --- a/src/common/common_w32res.rc +++ b/src/common/common_w32res.rc @@ -17,7 +17,7 @@ #define MY_VERSION LZMA_VERSION_MAJOR,LZMA_VERSION_MINOR,LZMA_VERSION_PATCH,MY_BUILD #define MY_FILENAME MY_NAME MY_SUFFIX -#define MY_COMPANY "The Tukaani Project " +#define MY_COMPANY "The Tukaani Project " #define MY_PRODUCT PACKAGE_NAME " <" PACKAGE_URL ">" LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US diff --git a/src/xz/xz.1 b/src/xz/xz.1 index bc5514d5..9dffdc6f 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -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 "2015-05-11" "Tukaani" "XZ Utils" +.TH XZ 1 "2017-04-19" "Tukaani" "XZ Utils" . .SH NAME xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files @@ -2779,8 +2779,8 @@ have the same number of bytes per pixel. .BR bzip2 (1), .BR 7z (1) .PP -XZ Utils: +XZ Utils: .br -XZ Embedded: +XZ Embedded: .br LZMA SDK: diff --git a/src/xzdec/xzdec.1 b/src/xzdec/xzdec.1 index 1e5ced94..78bc9b4a 100644 --- a/src/xzdec/xzdec.1 +++ b/src/xzdec/xzdec.1 @@ -4,7 +4,7 @@ .\" This file has been put into the public domain. .\" You can do whatever you want with this file. .\" -.TH XZDEC 1 "2013-06-30" "Tukaani" "XZ Utils" +.TH XZDEC 1 "2017-04-19" "Tukaani" "XZ Utils" .SH NAME xzdec, lzmadec \- Small .xz and .lzma decompressors .SH SYNOPSIS @@ -143,4 +143,4 @@ decompressor, consider using XZ Embedded. .SH "SEE ALSO" .BR xz (1) .PP -XZ Embedded: +XZ Embedded: diff --git a/windows/README-Windows.txt b/windows/README-Windows.txt index f9a00248..85ee3a09 100644 --- a/windows/README-Windows.txt +++ b/windows/README-Windows.txt @@ -7,7 +7,7 @@ Introduction This package includes command line tools (xz.exe and a few others) and the liblzma compression library from XZ Utils. You can find the - latest version and full source code from . + latest version and full source code from . The parts of the XZ Utils source code, that are relevant to this binary package, are in the public domain. XZ Utils have been built diff --git a/windows/config.h b/windows/config.h index 71f353f4..5bd82b07 100644 --- a/windows/config.h +++ b/windows/config.h @@ -134,7 +134,7 @@ #define PACKAGE_NAME "XZ Utils" /* Define to the home page for this package. */ -#define PACKAGE_URL "http://tukaani.org/xz/" +#define PACKAGE_URL "https://tukaani.org/xz/" /* The size of `size_t', as computed by sizeof. */ #ifdef _WIN64 -- cgit v1.2.3 From bae24675936df99064de1502593c006bd902594b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Apr 2017 19:30:22 +0300 Subject: Update the Git repository URL to HTTPS in ChangeLog. --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0c33f156..224783c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ See the commit log in the git repository: - git clone http://git.tukaani.org/xz.git + git clone https://git.tukaani.org/xz.git Note that "make dist" doesn't put this tiny file into the package. Instead, the git commit log is used as ChangeLog. See dist-hook in -- cgit v1.2.3 From 3ea5dbd9b0d79048e336e40cef3b6d814fb74e13 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Apr 2017 19:48:47 +0300 Subject: 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(-) diff --git a/Makefile.am b/Makefile.am index 10536971..16db5142 100644 --- a/Makefile.am +++ b/Makefile.am @@ -77,7 +77,8 @@ manfiles = \ # 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 ) \ + ( cd "$(srcdir)" && git log --date=iso --stat \ + b667a3ef6338a2c1db7b7706b1f6c99ea392221c^..HEAD ) \ > "$(distdir)/ChangeLog"; \ fi if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \ -- cgit v1.2.3 From eb2ef4c79bf405ea0d215f3b1df3d0eaf5e1d27b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 23 May 2017 18:34:43 +0300 Subject: xz: Fix "xz --list --robot missing_or_bad_file.xz". It ended up printing an uninitialized char-array when trying to print the check names (column 7) on the "totals" line. This also changes the column 12 (minimum xz version) to 50000002 (xz 5.0.0) instead of 0 when there are no valid input files. Thanks to kidmin for the bug report. --- src/xz/list.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xz/list.c b/src/xz/list.c index 449c2bc4..4dd1f6f8 100644 --- a/src/xz/list.c +++ b/src/xz/list.c @@ -109,7 +109,7 @@ static struct { uint32_t checks; uint32_t min_version; bool all_have_sizes; -} totals = { 0, 0, 0, 0, 0, 0, 0, 0, 0, true }; +} totals = { 0, 0, 0, 0, 0, 0, 0, 0, 50000002, true }; /// Convert XZ Utils version number to a string. @@ -636,7 +636,11 @@ static void get_check_names(char buf[CHECKS_STR_SIZE], uint32_t checks, bool space_after_comma) { - assert(checks != 0); + // If we get called when there are no Checks to print, set checks + // to 1 so that we print "None". This can happen in the robot mode + // when printing the totals line if there are no valid input files. + if (checks == 0) + checks = 1; char *pos = buf; size_t left = CHECKS_STR_SIZE; -- cgit v1.2.3 From ea4ea1dffafebaa8b2770bf3eca46900e4dd22dc Mon Sep 17 00:00:00 2001 From: Alexey Tourbin Date: Tue, 16 May 2017 23:56:35 +0300 Subject: 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(-) diff --git a/doc/examples/02_decompress.c b/doc/examples/02_decompress.c index 4c0f37cb..98339bef 100644 --- a/doc/examples/02_decompress.c +++ b/doc/examples/02_decompress.c @@ -138,7 +138,7 @@ decompress(lzma_stream *strm, const char *inname, FILE *infile, FILE *outfile) // Once the end of the input file has been reached, // we need to tell lzma_code() that no more input // will be coming. As said before, this isn't required - // if the LZMA_CONATENATED flag isn't used when + // if the LZMA_CONCATENATED flag isn't used when // initializing the decoder. if (feof(infile)) action = LZMA_FINISH; -- cgit v1.2.3 From 06eebd4543196ded36fa9b8b9544195b38b24ef2 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 14 Aug 2017 20:08:33 +0300 Subject: 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(+) diff --git a/src/liblzma/lzma/lzma_decoder.c b/src/liblzma/lzma/lzma_decoder.c index eedc0733..d0f29b76 100644 --- a/src/liblzma/lzma/lzma_decoder.c +++ b/src/liblzma/lzma/lzma_decoder.c @@ -16,6 +16,12 @@ #include "lzma_decoder.h" #include "range_decoder.h" +// The macros unroll loops with switch statements. +// Silence warnings about missing fall-through comments. +#if TUKLIB_GNUC_REQ(7, 0) +# pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#endif + #ifdef HAVE_SMALL diff --git a/src/xz/list.c b/src/xz/list.c index 4dd1f6f8..18fdca21 100644 --- a/src/xz/list.c +++ b/src/xz/list.c @@ -484,6 +484,8 @@ parse_block_header(file_pair *pair, const lzma_index_iter *iter, // If the above fails, the file is corrupt so // LZMA_DATA_ERROR is a good error code. + // Fall through + 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) -- cgit v1.2.3 From 10e02e0fbb6e2173f8b41f6e39b7b570f47dd74d Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 16 Sep 2017 12:39:43 +0300 Subject: Windows: Move VS2013 files into windows/vs2013 directory. --- windows/config.h | 148 -------------- windows/liblzma.vcxproj | 354 ---------------------------------- windows/liblzma_dll.vcxproj | 383 ------------------------------------- windows/vs2013/config.h | 148 ++++++++++++++ windows/vs2013/liblzma.vcxproj | 354 ++++++++++++++++++++++++++++++++++ windows/vs2013/liblzma_dll.vcxproj | 383 +++++++++++++++++++++++++++++++++++++ windows/vs2013/xz_win.sln | 48 +++++ windows/xz_win.sln | 48 ----- 8 files changed, 933 insertions(+), 933 deletions(-) delete mode 100644 windows/config.h delete mode 100644 windows/liblzma.vcxproj delete mode 100644 windows/liblzma_dll.vcxproj create mode 100644 windows/vs2013/config.h create mode 100644 windows/vs2013/liblzma.vcxproj create mode 100644 windows/vs2013/liblzma_dll.vcxproj create mode 100644 windows/vs2013/xz_win.sln delete mode 100644 windows/xz_win.sln diff --git a/windows/config.h b/windows/config.h deleted file mode 100644 index 5bd82b07..00000000 --- a/windows/config.h +++ /dev/null @@ -1,148 +0,0 @@ -/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2013 */ - -/* Prefix for symbols exported by tuklib_*.c files */ -#define TUKLIB_SYMBOL_PREFIX lzma_ - -/* How many MiB of RAM to assume if the real amount cannot be determined. */ -#define ASSUME_RAM 128 - -/* Define to 1 if crc32 integrity check is enabled. */ -#define HAVE_CHECK_CRC32 1 - -/* Define to 1 if crc64 integrity check is enabled. */ -#define HAVE_CHECK_CRC64 1 - -/* Define to 1 if sha256 integrity check is enabled. */ -#define HAVE_CHECK_SHA256 1 - -/* Define to 1 if any of HAVE_DECODER_foo have been defined. */ -#define HAVE_DECODERS 1 - -/* Define to 1 if arm decoder is enabled. */ -#define HAVE_DECODER_ARM 1 - -/* Define to 1 if armthumb decoder is enabled. */ -#define HAVE_DECODER_ARMTHUMB 1 - -/* Define to 1 if delta decoder is enabled. */ -#define HAVE_DECODER_DELTA 1 - -/* Define to 1 if ia64 decoder is enabled. */ -#define HAVE_DECODER_IA64 1 - -/* Define to 1 if lzma1 decoder is enabled. */ -#define HAVE_DECODER_LZMA1 1 - -/* Define to 1 if lzma2 decoder is enabled. */ -#define HAVE_DECODER_LZMA2 1 - -/* Define to 1 if powerpc decoder is enabled. */ -#define HAVE_DECODER_POWERPC 1 - -/* Define to 1 if sparc decoder is enabled. */ -#define HAVE_DECODER_SPARC 1 - -/* Define to 1 if x86 decoder is enabled. */ -#define HAVE_DECODER_X86 1 - -/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */ -#define HAVE_ENCODERS 1 - -/* Define to 1 if arm encoder is enabled. */ -#define HAVE_ENCODER_ARM 1 - -/* Define to 1 if armthumb encoder is enabled. */ -#define HAVE_ENCODER_ARMTHUMB 1 - -/* Define to 1 if delta encoder is enabled. */ -#define HAVE_ENCODER_DELTA 1 - -/* Define to 1 if ia64 encoder is enabled. */ -#define HAVE_ENCODER_IA64 1 - -/* Define to 1 if lzma1 encoder is enabled. */ -#define HAVE_ENCODER_LZMA1 1 - -/* Define to 1 if lzma2 encoder is enabled. */ -#define HAVE_ENCODER_LZMA2 1 - -/* Define to 1 if powerpc encoder is enabled. */ -#define HAVE_ENCODER_POWERPC 1 - -/* Define to 1 if sparc encoder is enabled. */ -#define HAVE_ENCODER_SPARC 1 - -/* Define to 1 if x86 encoder is enabled. */ -#define HAVE_ENCODER_X86 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 to enable bt2 match finder. */ -#define HAVE_MF_BT2 1 - -/* Define to 1 to enable bt3 match finder. */ -#define HAVE_MF_BT3 1 - -/* Define to 1 to enable bt4 match finder. */ -#define HAVE_MF_BT4 1 - -/* Define to 1 to enable hc3 match finder. */ -#define HAVE_MF_HC3 1 - -/* Define to 1 to enable hc4 match finder. */ -#define HAVE_MF_HC4 1 - -/* Define to 1 if stdbool.h conforms to C99. */ -#define HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 or 0, depending whether the compiler supports simple visibility - declarations. */ -#define HAVE_VISIBILITY 0 - -/* Define to 1 if the system has the type `_Bool'. */ -#define HAVE__BOOL 1 - -#ifdef _M_IX86 -/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This - avoids use of features that were added in Windows Vista. - This is used for 32-bit x86 builds for compatibility reasons since it - makes no measurable difference in performance compared to Vista threads. */ -#define MYTHREAD_WIN95 1 -#else -/* Define to 1 when using Windows Vista compatible threads. This uses features - that are not available on Windows XP. */ -#define MYTHREAD_VISTA 1 -#endif - -/* Define to 1 to disable debugging code. */ -#define NDEBUG 1 - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "XZ Utils" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "https://tukaani.org/xz/" - -/* The size of `size_t', as computed by sizeof. */ -#ifdef _WIN64 -#define SIZEOF_SIZE_T 8 -#else -#define SIZEOF_SIZE_T 4 -#endif - -/* Define to 1 if the system supports fast unaligned access to 16-bit and - 32-bit integers. */ -#define TUKLIB_FAST_UNALIGNED_ACCESS 1 diff --git a/windows/liblzma.vcxproj b/windows/liblzma.vcxproj deleted file mode 100644 index 2feafef9..00000000 --- a/windows/liblzma.vcxproj +++ /dev/null @@ -1,354 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - ReleaseMT - Win32 - - - ReleaseMT - x64 - - - Release - Win32 - - - Release - x64 - - - - {12728250-16EC-4DC6-94D7-E21DD88947F8} - Win32Proj - - - - StaticLibrary - true - v120 - - - StaticLibrary - true - v120 - - - StaticLibrary - false - v120 - - - StaticLibrary - false - v120 - - - StaticLibrary - false - v120 - - - StaticLibrary - false - v120 - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - - - - WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - - - - - WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - - - - - WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - true - true - - - - - WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - true - true - - - - - WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - true - true - - - - - WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/windows/liblzma_dll.vcxproj b/windows/liblzma_dll.vcxproj deleted file mode 100644 index d09f5e4f..00000000 --- a/windows/liblzma_dll.vcxproj +++ /dev/null @@ -1,383 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - ReleaseMT - Win32 - - - ReleaseMT - x64 - - - Release - Win32 - - - Release - x64 - - - - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} - Win32Proj - - - - DynamicLibrary - true - v120 - - - DynamicLibrary - true - v120 - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - v120 - - - - - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - true - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - - - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - - - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - - $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ - $(Configuration)\$(Platform)\$(ProjectName)\ - liblzma - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - true - true - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - true - true - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - MachineX86 - true - Windows - true - true - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - Level3 - ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple - - - true - Windows - true - true - - - ./;../src/liblzma/common;../src/common;../src/liblzma/api; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/windows/vs2013/config.h b/windows/vs2013/config.h new file mode 100644 index 00000000..5bd82b07 --- /dev/null +++ b/windows/vs2013/config.h @@ -0,0 +1,148 @@ +/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2013 */ + +/* Prefix for symbols exported by tuklib_*.c files */ +#define TUKLIB_SYMBOL_PREFIX lzma_ + +/* How many MiB of RAM to assume if the real amount cannot be determined. */ +#define ASSUME_RAM 128 + +/* Define to 1 if crc32 integrity check is enabled. */ +#define HAVE_CHECK_CRC32 1 + +/* Define to 1 if crc64 integrity check is enabled. */ +#define HAVE_CHECK_CRC64 1 + +/* Define to 1 if sha256 integrity check is enabled. */ +#define HAVE_CHECK_SHA256 1 + +/* Define to 1 if any of HAVE_DECODER_foo have been defined. */ +#define HAVE_DECODERS 1 + +/* Define to 1 if arm decoder is enabled. */ +#define HAVE_DECODER_ARM 1 + +/* Define to 1 if armthumb decoder is enabled. */ +#define HAVE_DECODER_ARMTHUMB 1 + +/* Define to 1 if delta decoder is enabled. */ +#define HAVE_DECODER_DELTA 1 + +/* Define to 1 if ia64 decoder is enabled. */ +#define HAVE_DECODER_IA64 1 + +/* Define to 1 if lzma1 decoder is enabled. */ +#define HAVE_DECODER_LZMA1 1 + +/* Define to 1 if lzma2 decoder is enabled. */ +#define HAVE_DECODER_LZMA2 1 + +/* Define to 1 if powerpc decoder is enabled. */ +#define HAVE_DECODER_POWERPC 1 + +/* Define to 1 if sparc decoder is enabled. */ +#define HAVE_DECODER_SPARC 1 + +/* Define to 1 if x86 decoder is enabled. */ +#define HAVE_DECODER_X86 1 + +/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */ +#define HAVE_ENCODERS 1 + +/* Define to 1 if arm encoder is enabled. */ +#define HAVE_ENCODER_ARM 1 + +/* Define to 1 if armthumb encoder is enabled. */ +#define HAVE_ENCODER_ARMTHUMB 1 + +/* Define to 1 if delta encoder is enabled. */ +#define HAVE_ENCODER_DELTA 1 + +/* Define to 1 if ia64 encoder is enabled. */ +#define HAVE_ENCODER_IA64 1 + +/* Define to 1 if lzma1 encoder is enabled. */ +#define HAVE_ENCODER_LZMA1 1 + +/* Define to 1 if lzma2 encoder is enabled. */ +#define HAVE_ENCODER_LZMA2 1 + +/* Define to 1 if powerpc encoder is enabled. */ +#define HAVE_ENCODER_POWERPC 1 + +/* Define to 1 if sparc encoder is enabled. */ +#define HAVE_ENCODER_SPARC 1 + +/* Define to 1 if x86 encoder is enabled. */ +#define HAVE_ENCODER_X86 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 to enable bt2 match finder. */ +#define HAVE_MF_BT2 1 + +/* Define to 1 to enable bt3 match finder. */ +#define HAVE_MF_BT3 1 + +/* Define to 1 to enable bt4 match finder. */ +#define HAVE_MF_BT4 1 + +/* Define to 1 to enable hc3 match finder. */ +#define HAVE_MF_HC3 1 + +/* Define to 1 to enable hc4 match finder. */ +#define HAVE_MF_HC4 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#define HAVE_VISIBILITY 0 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +#ifdef _M_IX86 +/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This + avoids use of features that were added in Windows Vista. + This is used for 32-bit x86 builds for compatibility reasons since it + makes no measurable difference in performance compared to Vista threads. */ +#define MYTHREAD_WIN95 1 +#else +/* Define to 1 when using Windows Vista compatible threads. This uses features + that are not available on Windows XP. */ +#define MYTHREAD_VISTA 1 +#endif + +/* Define to 1 to disable debugging code. */ +#define NDEBUG 1 + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "XZ Utils" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://tukaani.org/xz/" + +/* The size of `size_t', as computed by sizeof. */ +#ifdef _WIN64 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_SIZE_T 4 +#endif + +/* Define to 1 if the system supports fast unaligned access to 16-bit and + 32-bit integers. */ +#define TUKLIB_FAST_UNALIGNED_ACCESS 1 diff --git a/windows/vs2013/liblzma.vcxproj b/windows/vs2013/liblzma.vcxproj new file mode 100644 index 00000000..66330022 --- /dev/null +++ b/windows/vs2013/liblzma.vcxproj @@ -0,0 +1,354 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {12728250-16EC-4DC6-94D7-E21DD88947F8} + Win32Proj + + + + StaticLibrary + true + v120 + + + StaticLibrary + true + v120 + + + StaticLibrary + false + v120 + + + StaticLibrary + false + v120 + + + StaticLibrary + false + v120 + + + StaticLibrary + false + v120 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/windows/vs2013/liblzma_dll.vcxproj b/windows/vs2013/liblzma_dll.vcxproj new file mode 100644 index 00000000..264394c1 --- /dev/null +++ b/windows/vs2013/liblzma_dll.vcxproj @@ -0,0 +1,383 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} + Win32Proj + + + + DynamicLibrary + true + v120 + + + DynamicLibrary + true + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/windows/vs2013/xz_win.sln b/windows/vs2013/xz_win.sln new file mode 100644 index 00000000..3d25291c --- /dev/null +++ b/windows/vs2013/xz_win.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseMT|Win32 = ReleaseMT|Win32 + ReleaseMT|x64 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/windows/xz_win.sln b/windows/xz_win.sln deleted file mode 100644 index 3d25291c..00000000 --- a/windows/xz_win.sln +++ /dev/null @@ -1,48 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - ReleaseMT|Win32 = ReleaseMT|Win32 - ReleaseMT|x64 = ReleaseMT|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 - {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal -- cgit v1.2.3 From e775d2a8189d24f60470e6e49d8af881df3a1680 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 16 Sep 2017 12:54:23 +0300 Subject: Windows: Add project files for VS2017. These files match the v5.2 branch (no file info decoder). --- windows/vs2017/config.h | 148 ++++++++++++++ windows/vs2017/liblzma.vcxproj | 355 ++++++++++++++++++++++++++++++++++ windows/vs2017/liblzma_dll.vcxproj | 384 +++++++++++++++++++++++++++++++++++++ windows/vs2017/xz_win.sln | 48 +++++ 4 files changed, 935 insertions(+) create mode 100644 windows/vs2017/config.h create mode 100644 windows/vs2017/liblzma.vcxproj create mode 100644 windows/vs2017/liblzma_dll.vcxproj create mode 100644 windows/vs2017/xz_win.sln diff --git a/windows/vs2017/config.h b/windows/vs2017/config.h new file mode 100644 index 00000000..25ac18e7 --- /dev/null +++ b/windows/vs2017/config.h @@ -0,0 +1,148 @@ +/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2017 */ + +/* Prefix for symbols exported by tuklib_*.c files */ +#define TUKLIB_SYMBOL_PREFIX lzma_ + +/* How many MiB of RAM to assume if the real amount cannot be determined. */ +#define ASSUME_RAM 128 + +/* Define to 1 if crc32 integrity check is enabled. */ +#define HAVE_CHECK_CRC32 1 + +/* Define to 1 if crc64 integrity check is enabled. */ +#define HAVE_CHECK_CRC64 1 + +/* Define to 1 if sha256 integrity check is enabled. */ +#define HAVE_CHECK_SHA256 1 + +/* Define to 1 if any of HAVE_DECODER_foo have been defined. */ +#define HAVE_DECODERS 1 + +/* Define to 1 if arm decoder is enabled. */ +#define HAVE_DECODER_ARM 1 + +/* Define to 1 if armthumb decoder is enabled. */ +#define HAVE_DECODER_ARMTHUMB 1 + +/* Define to 1 if delta decoder is enabled. */ +#define HAVE_DECODER_DELTA 1 + +/* Define to 1 if ia64 decoder is enabled. */ +#define HAVE_DECODER_IA64 1 + +/* Define to 1 if lzma1 decoder is enabled. */ +#define HAVE_DECODER_LZMA1 1 + +/* Define to 1 if lzma2 decoder is enabled. */ +#define HAVE_DECODER_LZMA2 1 + +/* Define to 1 if powerpc decoder is enabled. */ +#define HAVE_DECODER_POWERPC 1 + +/* Define to 1 if sparc decoder is enabled. */ +#define HAVE_DECODER_SPARC 1 + +/* Define to 1 if x86 decoder is enabled. */ +#define HAVE_DECODER_X86 1 + +/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */ +#define HAVE_ENCODERS 1 + +/* Define to 1 if arm encoder is enabled. */ +#define HAVE_ENCODER_ARM 1 + +/* Define to 1 if armthumb encoder is enabled. */ +#define HAVE_ENCODER_ARMTHUMB 1 + +/* Define to 1 if delta encoder is enabled. */ +#define HAVE_ENCODER_DELTA 1 + +/* Define to 1 if ia64 encoder is enabled. */ +#define HAVE_ENCODER_IA64 1 + +/* Define to 1 if lzma1 encoder is enabled. */ +#define HAVE_ENCODER_LZMA1 1 + +/* Define to 1 if lzma2 encoder is enabled. */ +#define HAVE_ENCODER_LZMA2 1 + +/* Define to 1 if powerpc encoder is enabled. */ +#define HAVE_ENCODER_POWERPC 1 + +/* Define to 1 if sparc encoder is enabled. */ +#define HAVE_ENCODER_SPARC 1 + +/* Define to 1 if x86 encoder is enabled. */ +#define HAVE_ENCODER_X86 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 to enable bt2 match finder. */ +#define HAVE_MF_BT2 1 + +/* Define to 1 to enable bt3 match finder. */ +#define HAVE_MF_BT3 1 + +/* Define to 1 to enable bt4 match finder. */ +#define HAVE_MF_BT4 1 + +/* Define to 1 to enable hc3 match finder. */ +#define HAVE_MF_HC3 1 + +/* Define to 1 to enable hc4 match finder. */ +#define HAVE_MF_HC4 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#define HAVE_VISIBILITY 0 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +#ifdef _M_IX86 +/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This + avoids use of features that were added in Windows Vista. + This is used for 32-bit x86 builds for compatibility reasons since it + makes no measurable difference in performance compared to Vista threads. */ +#define MYTHREAD_WIN95 1 +#else +/* Define to 1 when using Windows Vista compatible threads. This uses features + that are not available on Windows XP. */ +#define MYTHREAD_VISTA 1 +#endif + +/* Define to 1 to disable debugging code. */ +#define NDEBUG 1 + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "XZ Utils" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://tukaani.org/xz/" + +/* The size of `size_t', as computed by sizeof. */ +#ifdef _WIN64 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_SIZE_T 4 +#endif + +/* Define to 1 if the system supports fast unaligned access to 16-bit and + 32-bit integers. */ +#define TUKLIB_FAST_UNALIGNED_ACCESS 1 diff --git a/windows/vs2017/liblzma.vcxproj b/windows/vs2017/liblzma.vcxproj new file mode 100644 index 00000000..a6b5f633 --- /dev/null +++ b/windows/vs2017/liblzma.vcxproj @@ -0,0 +1,355 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {12728250-16EC-4DC6-94D7-E21DD88947F8} + Win32Proj + 10.0.15063.0 + + + + StaticLibrary + true + v141 + + + StaticLibrary + true + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/vs2017/liblzma_dll.vcxproj b/windows/vs2017/liblzma_dll.vcxproj new file mode 100644 index 00000000..dcea3037 --- /dev/null +++ b/windows/vs2017/liblzma_dll.vcxproj @@ -0,0 +1,384 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} + Win32Proj + 10.0.15063.0 + + + + DynamicLibrary + true + v141 + + + DynamicLibrary + true + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + + + true + Windows + true + true + + + ./;../src/liblzma/common;../src/common;../src/liblzma/api; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/vs2017/xz_win.sln b/windows/vs2017/xz_win.sln new file mode 100644 index 00000000..ba49f3e8 --- /dev/null +++ b/windows/vs2017/xz_win.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseMT|Win32 = ReleaseMT|Win32 + ReleaseMT|x64 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal -- cgit v1.2.3 From 1ef3cc226e3ce173575c218238b71a4eecabc470 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 16 Sep 2017 20:36:20 +0300 Subject: 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(-) diff --git a/windows/vs2013/liblzma.vcxproj b/windows/vs2013/liblzma.vcxproj index 66330022..36cb09be 100644 --- a/windows/vs2013/liblzma.vcxproj +++ b/windows/vs2013/liblzma.vcxproj @@ -120,7 +120,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -135,7 +135,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -148,7 +148,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -164,7 +164,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -179,7 +179,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -195,7 +195,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true diff --git a/windows/vs2013/liblzma_dll.vcxproj b/windows/vs2013/liblzma_dll.vcxproj index 264394c1..f764dc10 100644 --- a/windows/vs2013/liblzma_dll.vcxproj +++ b/windows/vs2013/liblzma_dll.vcxproj @@ -128,7 +128,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -136,7 +136,7 @@ Windows - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -146,14 +146,14 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true Windows - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -162,7 +162,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -172,7 +172,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -181,7 +181,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -190,7 +190,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -199,7 +199,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -209,7 +209,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -218,7 +218,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -227,7 +227,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; diff --git a/windows/vs2017/liblzma.vcxproj b/windows/vs2017/liblzma.vcxproj index a6b5f633..bf4748fa 100644 --- a/windows/vs2017/liblzma.vcxproj +++ b/windows/vs2017/liblzma.vcxproj @@ -121,7 +121,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -136,7 +136,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -149,7 +149,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -165,7 +165,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -180,7 +180,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -196,7 +196,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true diff --git a/windows/vs2017/liblzma_dll.vcxproj b/windows/vs2017/liblzma_dll.vcxproj index dcea3037..228d82eb 100644 --- a/windows/vs2017/liblzma_dll.vcxproj +++ b/windows/vs2017/liblzma_dll.vcxproj @@ -129,7 +129,7 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -137,7 +137,7 @@ Windows - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -147,14 +147,14 @@ Level3 ProgramDatabase Disabled - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true Windows - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -163,7 +163,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -173,7 +173,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -182,7 +182,7 @@ MultiThreadedDLL Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -191,7 +191,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -200,7 +200,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple MachineX86 @@ -210,7 +210,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; @@ -219,7 +219,7 @@ MultiThreaded Level3 ProgramDatabase - ./;../src/liblzma/common;../src/common;../src/liblzma/api;../src/liblzma/check;../src/liblzma/delta;../src/liblzma/lz;../src/liblzma/lzma;../src/liblzma/rangecoder;../src/liblzma/simple + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple true @@ -228,7 +228,7 @@ true - ./;../src/liblzma/common;../src/common;../src/liblzma/api; + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; -- cgit v1.2.3 From 4505ca483985f88c6923c05a43b4327feaab83b1 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 24 Sep 2017 20:04:24 +0300 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 1f40c656..a1f65cc8 100644 --- a/THANKS +++ b/THANKS @@ -56,6 +56,7 @@ has been important. :-) In alphabetical order: - Andraž 'ruskie' Levstik - Cary Lewis - Wim Lewis + - Eric Lindblad - Lorenzo De Liso - Bela Lubkin - Gregory Margo -- cgit v1.2.3 From a3ce3e902342be37c626a561ce3d9ffcf27d0f94 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 10 Jan 2018 21:54:27 +0200 Subject: tuklib_integer: New Intel C compiler needs immintrin.h. Thanks to Melanie Blower (Intel) for the patch. --- src/common/tuklib_integer.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index a7fda679..b1e84d5c 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -98,6 +98,17 @@ #endif +//////////////////////////////// +// Compiler-specific features // +//////////////////////////////// + +// Newer Intel C compilers require immintrin.h for _bit_scan_reverse() +// and such functions. +#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) +# include +#endif + + /////////////////// // Byte swapping // /////////////////// -- cgit v1.2.3 From 48f3b9f73ffea7f55d5678997aba0e79d2e82168 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 10 Jan 2018 22:10:39 +0200 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index a1f65cc8..e65f65ac 100644 --- a/THANKS +++ b/THANKS @@ -11,6 +11,7 @@ has been important. :-) In alphabetical order: - Karl Berry - Anders F. Björklund - Emmanuel Blot + - Melanie Blower - Martin Blumenstingl - Jakub Bogusz - Maarten Bosmans -- cgit v1.2.3 From 0b8947782ff3c5ef830a7f85412e44dcf3cdeb77 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 6 Feb 2018 18:02:48 +0200 Subject: liblzma: Remove incorrect #ifdef from range_common.h. In most cases it was harmless but it could affect some custom build systems. Thanks to Pippijn van Steenhoven. --- src/liblzma/rangecoder/range_common.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/liblzma/rangecoder/range_common.h b/src/liblzma/rangecoder/range_common.h index 0e642419..2c74dc15 100644 --- a/src/liblzma/rangecoder/range_common.h +++ b/src/liblzma/rangecoder/range_common.h @@ -14,9 +14,7 @@ #ifndef LZMA_RANGE_COMMON_H #define LZMA_RANGE_COMMON_H -#ifdef HAVE_CONFIG_H -# include "common.h" -#endif +#include "common.h" /////////////// -- cgit v1.2.3 From c4a616f4536146f8906e1b4412eefeec07b28fae Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 29 Jan 2018 13:58:18 -0500 Subject: nothrow: use noexcept for C++11 and newer In C++11, the `throw()` specifier is deprecated and `noexcept` is preffered instead. --- src/liblzma/api/lzma.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/liblzma/api/lzma.h b/src/liblzma/api/lzma.h index ce675a78..aa88e424 100644 --- a/src/liblzma/api/lzma.h +++ b/src/liblzma/api/lzma.h @@ -219,7 +219,11 @@ */ #ifndef lzma_nothrow # if defined(__cplusplus) -# define lzma_nothrow throw() +# if __cplusplus >= 201103L +# define lzma_nothrow noexcept +# else +# define lzma_nothrow throw() +# endif # elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) # define lzma_nothrow __attribute__((__nothrow__)) # else -- cgit v1.2.3 From 5801591162a280aa52d156dfde42c531ec7fd8b6 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 6 Feb 2018 19:36:30 +0200 Subject: Update THANKS. --- THANKS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/THANKS b/THANKS index e65f65ac..30fbfb6f 100644 --- a/THANKS +++ b/THANKS @@ -13,6 +13,7 @@ has been important. :-) In alphabetical order: - Emmanuel Blot - Melanie Blower - Martin Blumenstingl + - Ben Boeckel - Jakub Bogusz - Maarten Bosmans - Trent W. Buck @@ -95,6 +96,7 @@ has been important. :-) In alphabetical order: - Stuart Shelton - Sebastian Andrzej Siewior - Brad Smith + - Pippijn van Steenhoven - Jonathan Stott - Dan Stromberg - Vincent Torri -- cgit v1.2.3 From 7b350fe21aa4fd6495a3b6188a40e3f1ae7c0edf Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 29 Apr 2018 18:15:37 +0300 Subject: Add NEWS for 5.2.4. --- NEWS | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/NEWS b/NEWS index 26116818..f2a1ad3b 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,33 @@ XZ Utils Release Notes ====================== +5.2.4 (2018-04-29) + + * liblzma: + + - Allow 0 as memory usage limit instead of returning + LZMA_PROG_ERROR. Now 0 is treated as if 1 byte was specified, + which effectively is the same as 0. + + - Use "noexcept" keyword instead of "throw()" in the public + headers when a C++11 (or newer standard) compiler is used. + + - Added a portability fix for recent Intel C Compilers. + + - Microsoft Visual Studio build files have been moved under + windows/vs2013 and windows/vs2017. + + * xz: + + - Fix "xz --list --robot missing_or_bad_file.xz" which would + try to print an unitialized string and thus produce garbage + output. Since the exit status is non-zero, most uses of such + a command won't try to interpret the garbage output. + + - "xz --list foo.xz" could print "Internal error (bug)" in a + corner case where a specific memory usage limit had been set. + + 5.2.3 (2016-12-30) * xz: -- cgit v1.2.3 From c47fa6d06745bb2e99866e76b81ac7a9c5a8bfec Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 29 Apr 2018 18:48:00 +0300 Subject: extra/scanlzma: Fix compiler warnings. --- extra/scanlzma/scanlzma.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extra/scanlzma/scanlzma.c b/extra/scanlzma/scanlzma.c index 5c3b25be..110f822b 100644 --- a/extra/scanlzma/scanlzma.c +++ b/extra/scanlzma/scanlzma.c @@ -37,6 +37,10 @@ /* 5 8 Uncompressed size (little endian). -1 means unknown size */ /* 13 Compressed data */ +#include +#include +#include + #define BUFSIZE 4096 int find_lzma_header(unsigned char *buf) { @@ -48,7 +52,7 @@ int find_lzma_header(unsigned char *buf) { } int main(int argc, char *argv[]) { - char buf[BUFSIZE]; + unsigned char buf[BUFSIZE]; int ret, i, numlzma, blocks=0; if (argc != 2) { -- cgit v1.2.3 From b5be61cc06088bb07f488f9baf7d447ff47b37c1 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 29 Apr 2018 19:00:06 +0300 Subject: Bump version and soname for 5.2.4. --- src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/liblzma/Makefile.am b/src/liblzma/Makefile.am index 802feb3f..ae68107b 100644 --- a/src/liblzma/Makefile.am +++ b/src/liblzma/Makefile.am @@ -24,7 +24,7 @@ liblzma_la_CPPFLAGS = \ -I$(top_srcdir)/src/liblzma/simple \ -I$(top_srcdir)/src/common \ -DTUKLIB_SYMBOL_PREFIX=lzma_ -liblzma_la_LDFLAGS = -no-undefined -version-info 7:3:2 +liblzma_la_LDFLAGS = -no-undefined -version-info 7:4:2 EXTRA_DIST += liblzma.map validate_map.sh if COND_SYMVERS diff --git a/src/liblzma/api/lzma/version.h b/src/liblzma/api/lzma/version.h index b5e061c2..143c7dea 100644 --- a/src/liblzma/api/lzma/version.h +++ b/src/liblzma/api/lzma/version.h @@ -22,7 +22,7 @@ */ #define LZMA_VERSION_MAJOR 5 #define LZMA_VERSION_MINOR 2 -#define LZMA_VERSION_PATCH 3 +#define LZMA_VERSION_PATCH 4 #define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE #ifndef LZMA_VERSION_COMMIT -- cgit v1.2.3 From 1424078d6328291c7c524b64328ce9660617cb24 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 13 Jan 2019 17:29:23 +0200 Subject: Windows/VS2017: Omit WindowsTargetPlatformVersion from project files. I understood that if a WTPV is specified, it's often wrong because different VS installations have different SDK version installed. Omitting the WTPV tag makes VS2017 default to Windows SDK 8.1 which often is also missing, so in any case people may need to specify the WTPV before building. But some day in the future a missing WTPV tag will start to default to the latest installed SDK which sounds reasonable: https://developercommunity.visualstudio.com/content/problem/140294/windowstargetplatformversion-makes-it-impossible-t.html Thanks to "dom". --- windows/INSTALL-MSVC.txt | 4 ++++ windows/vs2017/liblzma.vcxproj | 1 - windows/vs2017/liblzma_dll.vcxproj | 1 - 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/windows/INSTALL-MSVC.txt b/windows/INSTALL-MSVC.txt index 7dd31685..17e1da18 100644 --- a/windows/INSTALL-MSVC.txt +++ b/windows/INSTALL-MSVC.txt @@ -30,6 +30,10 @@ Building compiler switch to link to the CRT statically, so it will not have any other DLL dependencies. + The VS2017 project files don't set . + 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. MSVC gives a bunch of compiler warnings. Some warnings are specific diff --git a/windows/vs2017/liblzma.vcxproj b/windows/vs2017/liblzma.vcxproj index bf4748fa..32770808 100644 --- a/windows/vs2017/liblzma.vcxproj +++ b/windows/vs2017/liblzma.vcxproj @@ -29,7 +29,6 @@ {12728250-16EC-4DC6-94D7-E21DD88947F8} Win32Proj - 10.0.15063.0 diff --git a/windows/vs2017/liblzma_dll.vcxproj b/windows/vs2017/liblzma_dll.vcxproj index 228d82eb..33f3e694 100644 --- a/windows/vs2017/liblzma_dll.vcxproj +++ b/windows/vs2017/liblzma_dll.vcxproj @@ -29,7 +29,6 @@ {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} Win32Proj - 10.0.15063.0 -- cgit v1.2.3 From 25fccaf00bea399d8aa026e5b8fa254ce196e6e0 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Thu, 25 Apr 2019 17:39:32 +0200 Subject: Windows: Duplicate windows/vs2017 before upgrading --- windows/vs2019/config.h | 148 ++++++++++++++ windows/vs2019/liblzma.vcxproj | 354 ++++++++++++++++++++++++++++++++++ windows/vs2019/liblzma_dll.vcxproj | 383 +++++++++++++++++++++++++++++++++++++ windows/vs2019/xz_win.sln | 48 +++++ 4 files changed, 933 insertions(+) create mode 100644 windows/vs2019/config.h create mode 100644 windows/vs2019/liblzma.vcxproj create mode 100644 windows/vs2019/liblzma_dll.vcxproj create mode 100644 windows/vs2019/xz_win.sln diff --git a/windows/vs2019/config.h b/windows/vs2019/config.h new file mode 100644 index 00000000..25ac18e7 --- /dev/null +++ b/windows/vs2019/config.h @@ -0,0 +1,148 @@ +/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2017 */ + +/* Prefix for symbols exported by tuklib_*.c files */ +#define TUKLIB_SYMBOL_PREFIX lzma_ + +/* How many MiB of RAM to assume if the real amount cannot be determined. */ +#define ASSUME_RAM 128 + +/* Define to 1 if crc32 integrity check is enabled. */ +#define HAVE_CHECK_CRC32 1 + +/* Define to 1 if crc64 integrity check is enabled. */ +#define HAVE_CHECK_CRC64 1 + +/* Define to 1 if sha256 integrity check is enabled. */ +#define HAVE_CHECK_SHA256 1 + +/* Define to 1 if any of HAVE_DECODER_foo have been defined. */ +#define HAVE_DECODERS 1 + +/* Define to 1 if arm decoder is enabled. */ +#define HAVE_DECODER_ARM 1 + +/* Define to 1 if armthumb decoder is enabled. */ +#define HAVE_DECODER_ARMTHUMB 1 + +/* Define to 1 if delta decoder is enabled. */ +#define HAVE_DECODER_DELTA 1 + +/* Define to 1 if ia64 decoder is enabled. */ +#define HAVE_DECODER_IA64 1 + +/* Define to 1 if lzma1 decoder is enabled. */ +#define HAVE_DECODER_LZMA1 1 + +/* Define to 1 if lzma2 decoder is enabled. */ +#define HAVE_DECODER_LZMA2 1 + +/* Define to 1 if powerpc decoder is enabled. */ +#define HAVE_DECODER_POWERPC 1 + +/* Define to 1 if sparc decoder is enabled. */ +#define HAVE_DECODER_SPARC 1 + +/* Define to 1 if x86 decoder is enabled. */ +#define HAVE_DECODER_X86 1 + +/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */ +#define HAVE_ENCODERS 1 + +/* Define to 1 if arm encoder is enabled. */ +#define HAVE_ENCODER_ARM 1 + +/* Define to 1 if armthumb encoder is enabled. */ +#define HAVE_ENCODER_ARMTHUMB 1 + +/* Define to 1 if delta encoder is enabled. */ +#define HAVE_ENCODER_DELTA 1 + +/* Define to 1 if ia64 encoder is enabled. */ +#define HAVE_ENCODER_IA64 1 + +/* Define to 1 if lzma1 encoder is enabled. */ +#define HAVE_ENCODER_LZMA1 1 + +/* Define to 1 if lzma2 encoder is enabled. */ +#define HAVE_ENCODER_LZMA2 1 + +/* Define to 1 if powerpc encoder is enabled. */ +#define HAVE_ENCODER_POWERPC 1 + +/* Define to 1 if sparc encoder is enabled. */ +#define HAVE_ENCODER_SPARC 1 + +/* Define to 1 if x86 encoder is enabled. */ +#define HAVE_ENCODER_X86 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 to enable bt2 match finder. */ +#define HAVE_MF_BT2 1 + +/* Define to 1 to enable bt3 match finder. */ +#define HAVE_MF_BT3 1 + +/* Define to 1 to enable bt4 match finder. */ +#define HAVE_MF_BT4 1 + +/* Define to 1 to enable hc3 match finder. */ +#define HAVE_MF_HC3 1 + +/* Define to 1 to enable hc4 match finder. */ +#define HAVE_MF_HC4 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#define HAVE_VISIBILITY 0 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +#ifdef _M_IX86 +/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This + avoids use of features that were added in Windows Vista. + This is used for 32-bit x86 builds for compatibility reasons since it + makes no measurable difference in performance compared to Vista threads. */ +#define MYTHREAD_WIN95 1 +#else +/* Define to 1 when using Windows Vista compatible threads. This uses features + that are not available on Windows XP. */ +#define MYTHREAD_VISTA 1 +#endif + +/* Define to 1 to disable debugging code. */ +#define NDEBUG 1 + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "XZ Utils" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://tukaani.org/xz/" + +/* The size of `size_t', as computed by sizeof. */ +#ifdef _WIN64 +#define SIZEOF_SIZE_T 8 +#else +#define SIZEOF_SIZE_T 4 +#endif + +/* Define to 1 if the system supports fast unaligned access to 16-bit and + 32-bit integers. */ +#define TUKLIB_FAST_UNALIGNED_ACCESS 1 diff --git a/windows/vs2019/liblzma.vcxproj b/windows/vs2019/liblzma.vcxproj new file mode 100644 index 00000000..32770808 --- /dev/null +++ b/windows/vs2019/liblzma.vcxproj @@ -0,0 +1,354 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {12728250-16EC-4DC6-94D7-E21DD88947F8} + Win32Proj + + + + StaticLibrary + true + v141 + + + StaticLibrary + true + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + + + + + WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + + + WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/vs2019/liblzma_dll.vcxproj b/windows/vs2019/liblzma_dll.vcxproj new file mode 100644 index 00000000..33f3e694 --- /dev/null +++ b/windows/vs2019/liblzma_dll.vcxproj @@ -0,0 +1,383 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + ReleaseMT + Win32 + + + ReleaseMT + x64 + + + Release + Win32 + + + Release + x64 + + + + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} + Win32Proj + + + + DynamicLibrary + true + v141 + + + DynamicLibrary + true + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + true + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + $(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\ + $(Configuration)\$(Platform)\$(ProjectName)\ + liblzma + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + true + true + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + MachineX86 + true + Windows + true + true + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple + + + true + Windows + true + true + + + ./;../../src/liblzma/common;../../src/common;../../src/liblzma/api; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/vs2019/xz_win.sln b/windows/vs2019/xz_win.sln new file mode 100644 index 00000000..ba49f3e8 --- /dev/null +++ b/windows/vs2019/xz_win.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseMT|Win32 = ReleaseMT|Win32 + ReleaseMT|x64 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64 + {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal -- cgit v1.2.3 From c2ef96685fc7ca36311649eeb2284b9808292040 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Thu, 25 Apr 2019 17:40:24 +0200 Subject: Windows: Upgrade solution with VS2019 --- windows/vs2019/liblzma.vcxproj | 15 ++++++++------- windows/vs2019/liblzma_dll.vcxproj | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/windows/vs2019/liblzma.vcxproj b/windows/vs2019/liblzma.vcxproj index 32770808..c8039fe3 100644 --- a/windows/vs2019/liblzma.vcxproj +++ b/windows/vs2019/liblzma.vcxproj @@ -29,37 +29,38 @@ {12728250-16EC-4DC6-94D7-E21DD88947F8} Win32Proj + 10.0 StaticLibrary true - v141 + v142 StaticLibrary true - v141 + v142 StaticLibrary false - v141 + v142 StaticLibrary false - v141 + v142 StaticLibrary false - v141 + v142 StaticLibrary false - v141 + v142 @@ -351,4 +352,4 @@ - + \ No newline at end of file diff --git a/windows/vs2019/liblzma_dll.vcxproj b/windows/vs2019/liblzma_dll.vcxproj index 33f3e694..fc5ddbb2 100644 --- a/windows/vs2019/liblzma_dll.vcxproj +++ b/windows/vs2019/liblzma_dll.vcxproj @@ -29,37 +29,38 @@ {E0F247DB-EF12-4755-8DF9-F74BCD1348F7} Win32Proj + 10.0 DynamicLibrary true - v141 + v142 DynamicLibrary true - v141 + v142 DynamicLibrary false - v141 + v142 DynamicLibrary false - v141 + v142 DynamicLibrary false - v141 + v142 DynamicLibrary false - v141 + v142 @@ -380,4 +381,4 @@ - + \ No newline at end of file -- cgit v1.2.3 From 0ffd30e172fd18cc619823b2a86448bf56a67e22 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Thu, 25 Apr 2019 17:44:06 +0200 Subject: Windows: Upgrade solution itself --- windows/vs2019/xz_win.sln | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/windows/vs2019/xz_win.sln b/windows/vs2019/xz_win.sln index ba49f3e8..c65cd3e2 100644 --- a/windows/vs2019/xz_win.sln +++ b/windows/vs2019/xz_win.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.14 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28803.202 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" EndProject @@ -45,4 +45,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {78887FAE-FC02-4B67-A8DB-DC7863496039} + EndGlobalSection EndGlobal -- cgit v1.2.3 From 905de7e93528ca5a47039e7e1e5270163f9fc67e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 1 May 2019 16:43:16 +0300 Subject: Windows: Update VS version in windows/vs2019/config.h. --- windows/vs2019/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/vs2019/config.h b/windows/vs2019/config.h index 25ac18e7..ef921e80 100644 --- a/windows/vs2019/config.h +++ b/windows/vs2019/config.h @@ -1,4 +1,4 @@ -/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2017 */ +/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2019 */ /* Prefix for symbols exported by tuklib_*.c files */ #define TUKLIB_SYMBOL_PREFIX lzma_ -- cgit v1.2.3 From 531e78e5a253a3e2c4d4dd1505acaccee48f4083 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 1 May 2019 16:52:36 +0300 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 30fbfb6f..54ad87bf 100644 --- a/THANKS +++ b/THANKS @@ -62,6 +62,7 @@ has been important. :-) In alphabetical order: - Lorenzo De Liso - Bela Lubkin - Gregory Margo + - Julien Marrec - Jim Meyering - Arkadiusz Miskiewicz - Conley Moorhous -- cgit v1.2.3 From 65b4aba6d06d2cd24ba9ad01fa389c238ad8f352 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 19 May 2018 21:23:25 +0300 Subject: liblzma: Improve lzma_properties_decode() API documentation. --- src/liblzma/api/lzma/filter.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/liblzma/api/lzma/filter.h b/src/liblzma/api/lzma/filter.h index 4e78752b..8c859314 100644 --- a/src/liblzma/api/lzma/filter.h +++ b/src/liblzma/api/lzma/filter.h @@ -341,9 +341,10 @@ extern LZMA_API(lzma_ret) lzma_properties_encode( * \param filter filter->id must have been set to the correct * Filter ID. filter->options doesn't need to be * initialized (it's not freed by this function). The - * decoded options will be stored to filter->options. - * filter->options is set to NULL if there are no - * properties or if an error occurs. + * decoded options will be stored in filter->options; + * 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(), * and in case of an error, also free(). -- cgit v1.2.3 From 273c33297bb69621045ed19665eaf8338bcf4a50 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 27 Jul 2018 16:02:58 +0300 Subject: liblzma: Remove an always-true condition from lzma_index_cat(). This should help static analysis tools to see that newg isn't leaked. Thanks to Pavel Raiskup. --- src/liblzma/common/index.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c index 26e4e519..007e1570 100644 --- a/src/liblzma/common/index.c +++ b/src/liblzma/common/index.c @@ -825,8 +825,8 @@ lzma_index_cat(lzma_index *restrict dest, lzma_index *restrict src, s->groups.root = &newg->node; } - if (s->groups.rightmost == &g->node) - s->groups.rightmost = &newg->node; + assert(s->groups.rightmost == &g->node); + s->groups.rightmost = &newg->node; lzma_free(g, allocator); -- cgit v1.2.3 From 7143b04fe49390807f355b1dad686a3d8c4dbdcf Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 27 Jul 2018 18:10:44 +0300 Subject: xzless: Rename unused variables to silence static analysers. In this particular case I don't see this affecting readability of the code. Thanks to Pavel Raiskup. --- src/scripts/xzless.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/xzless.in b/src/scripts/xzless.in index 288dd871..1b85ad6f 100644 --- a/src/scripts/xzless.in +++ b/src/scripts/xzless.in @@ -46,7 +46,7 @@ if test "${LESSMETACHARS+set}" != set; then LESSMETACHARS="$space$tab$nl'"';*?"()<>[|&^`#\$%=~' fi -if test "$(less -V | { read less ver re && 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" -- cgit v1.2.3 From 5a2fc3cd0194e55df329dd29f805299aaca5f32f Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Thu, 22 Nov 2018 15:14:34 +0100 Subject: 'have have' typos --- src/xz/signals.c | 2 +- src/xz/xz.1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/xz/signals.c b/src/xz/signals.c index 5387c424..56c1eb47 100644 --- a/src/xz/signals.c +++ b/src/xz/signals.c @@ -23,7 +23,7 @@ volatile sig_atomic_t user_abort = false; /// been done. static volatile sig_atomic_t exit_signal = 0; -/// Mask of signals for which have have established a signal handler to set +/// Mask of signals for which we have established a signal handler to set /// user_abort to true. static sigset_t hooked_signals; diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 9dffdc6f..47e6dd46 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -1551,7 +1551,7 @@ 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 have different alignment: +Different instruction sets have different alignment: .RS .RS .PP -- cgit v1.2.3 From fcc419e3c3f77a8b6fc5056a86b1b8abbe266e62 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 22 Nov 2018 17:20:31 +0200 Subject: xz: Update man page timestamp. --- src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 47e6dd46..63087ca7 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -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 "2017-04-19" "Tukaani" "XZ Utils" +.TH XZ 1 "2018-11-22" "Tukaani" "XZ Utils" . .SH NAME xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files -- cgit v1.2.3 From 3ca432d9cce4bf7e793de173dd22025b68611c42 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 14 Dec 2018 20:34:30 +0200 Subject: xz: Fix a crash in progress indicator when in passthru mode. "xz -dcfv not_an_xz_file" crashed (all four options are required to trigger it). It caused xz to call lzma_get_progress(&strm, ...) when no coder was initialized in strm. In this situation strm.internal is NULL which leads to a crash in lzma_get_progress(). The bug was introduced when xz started using lzma_get_progress() to get progress info for multi-threaded compression, so the bug is present in versions 5.1.3alpha and higher. Thanks to Filip Palian for the bug report. --- src/xz/coder.c | 11 +++++++---- src/xz/message.c | 18 ++++++++++++++++-- src/xz/message.h | 3 ++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index 3c6a01cb..f36d1bf2 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -902,16 +902,19 @@ coder_run(const char *filename) mytime_set_start_time(); // Initialize the progress indicator. + const bool is_passthru = init_ret + == CODER_INIT_PASSTHRU; const uint64_t in_size = pair->src_st.st_size <= 0 ? 0 : pair->src_st.st_size; - message_progress_start(&strm, in_size); + message_progress_start(&strm, + is_passthru, in_size); // Do the actual coding or passthru. - if (init_ret == CODER_INIT_NORMAL) - success = coder_normal(pair); - else + if (is_passthru) success = coder_passthru(pair); + else + success = coder_normal(pair); message_progress_end(success); } diff --git a/src/xz/message.c b/src/xz/message.c index f88c1231..50a0b148 100644 --- a/src/xz/message.c +++ b/src/xz/message.c @@ -56,6 +56,11 @@ static bool progress_active = false; /// Pointer to lzma_stream used to do the encoding or decoding. static lzma_stream *progress_strm; +/// This is true if we are in passthru mode (not actually compressing or +/// decompressing) and thus cannot use lzma_get_progress(progress_strm, ...). +/// That is, we are using coder_passthru() in coder.c. +static bool progress_is_from_passthru; + /// Expected size of the input stream is needed to show completion percentage /// and estimate remaining time. static uint64_t expected_in_size; @@ -241,11 +246,12 @@ message_filename(const char *src_name) extern void -message_progress_start(lzma_stream *strm, uint64_t in_size) +message_progress_start(lzma_stream *strm, bool is_passthru, uint64_t in_size) { // Store the pointer to the lzma_stream used to do the coding. // It is needed to find out the position in the stream. progress_strm = strm; + progress_is_from_passthru = is_passthru; // Store the expected size of the file. If we aren't printing any // statistics, then is will be unused. But since it is possible @@ -507,7 +513,15 @@ progress_pos(uint64_t *in_pos, uint64_t *compressed_pos, uint64_t *uncompressed_pos) { uint64_t out_pos; - lzma_get_progress(progress_strm, in_pos, &out_pos); + if (progress_is_from_passthru) { + // In passthru mode the progress info is in total_in/out but + // the *progress_strm itself isn't initialized and thus we + // cannot use lzma_get_progress(). + *in_pos = progress_strm->total_in; + out_pos = progress_strm->total_out; + } else { + lzma_get_progress(progress_strm, in_pos, &out_pos); + } // It cannot have processed more input than it has been given. assert(*in_pos <= progress_strm->total_in); diff --git a/src/xz/message.h b/src/xz/message.h index 74599bd9..894ac783 100644 --- a/src/xz/message.h +++ b/src/xz/message.h @@ -150,7 +150,8 @@ extern void message_filename(const char *src_name); /// \param strm Pointer to lzma_stream used for the coding. /// \param in_size Size of the input file, or zero if unknown. /// -extern void message_progress_start(lzma_stream *strm, uint64_t in_size); +extern void message_progress_start(lzma_stream *strm, + bool is_passthru, uint64_t in_size); /// Update the progress info if in verbose mode and enough time has passed -- cgit v1.2.3 From 0c238dc3feb0a3eea1e713feb8d338c8dfba9f74 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 20 Dec 2018 20:42:29 +0200 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 54ad87bf..64c88154 100644 --- a/THANKS +++ b/THANKS @@ -73,6 +73,7 @@ has been important. :-) In alphabetical order: - Jonathan Nieder - Andre Noll - Peter O'Gorman + - Filip Palian - Peter Pallinger - Rui Paulo - Igor Pavlov -- cgit v1.2.3 From aeb3be8ac4c4b06a745c3799b80b38159fb78b1a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 4 Mar 2019 22:49:04 +0200 Subject: README: Update translation instructions. XZ Utils is now part of the Translation Project . --- README | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/README b/README index 720a1a58..0676f6ad 100644 --- a/README +++ b/README @@ -195,16 +195,15 @@ XZ Utils 4. Translating the xz tool -------------------------- - The messages from the xz tool have been translated into a few - languages. Before starting to translate into a new language, ask - the author whether someone else hasn't already started working on it. + The translations are handled via the Translation Project. If you + wish to help translating xz, please join the Translation Project: - Test your translation. Testing includes comparing the translated - output to the original English version by running the same commands - in both your target locale and with LC_ALL=C. Ask someone to - proof-read and test the translation. + https://translationproject.org/html/translators.html - Testing can be done e.g. by installing xz into a temporary directory: + 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 # @@ -257,14 +256,11 @@ XZ Utils 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. If they suggest testing the - translation with some type of command, do it. If testing needs - input files, use e.g. tests/files/good-*.xz. - - - When updating the translation, read the fuzzy (modified) strings - carefully, and don't mark them as updated before you actually - have updated them. Reading through the unchanged messages can be - good too; sometimes you may find a better wording for them. + 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. @@ -274,9 +270,7 @@ XZ Utils make a direct word-by-word translation from English especially if the result doesn't sound good in your language. - In short, take your time and pay attention to the details. Making - a good translation is not a quick and trivial thing to do. The - translated xz should look as polished as the English version. + Thanks for your help! 5. Other implementations of the .xz format -- cgit v1.2.3 From 0d318402f8a022f707622c72f8f1894ea476cf89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20C=C5=93ur?= Date: Wed, 8 May 2019 13:30:57 +0800 Subject: spelling --- Doxyfile.in | 2 +- NEWS | 2 +- src/liblzma/api/lzma/block.h | 2 +- src/liblzma/api/lzma/hardware.h | 2 +- src/liblzma/api/lzma/lzma12.h | 2 +- src/liblzma/api/lzma/vli.h | 2 +- src/liblzma/common/hardware_physmem.c | 2 +- src/liblzma/common/index.c | 4 ++-- src/liblzma/common/stream_encoder_mt.c | 2 +- src/liblzma/common/vli_decoder.c | 2 +- src/liblzma/lz/lz_decoder.c | 2 +- src/scripts/xzgrep.in | 2 +- src/xz/args.c | 2 +- src/xz/coder.c | 4 ++-- src/xz/main.c | 2 +- src/xz/mytime.h | 2 +- src/xz/private.h | 2 +- src/xz/xz.1 | 2 +- windows/build.bash | 2 +- 19 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Doxyfile.in b/Doxyfile.in index 386706ab..1364ff2d 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -564,7 +564,7 @@ REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. +# link to the source code. Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES diff --git a/NEWS b/NEWS index f2a1ad3b..d5dbabd5 100644 --- a/NEWS +++ b/NEWS @@ -21,7 +21,7 @@ XZ Utils Release Notes * xz: - Fix "xz --list --robot missing_or_bad_file.xz" which would - try to print an unitialized string and thus produce garbage + try to print an uninitialized string and thus produce garbage output. Since the exit status is non-zero, most uses of such a command won't try to interpret the garbage output. diff --git a/src/liblzma/api/lzma/block.h b/src/liblzma/api/lzma/block.h index 7bdcfd7c..962f3877 100644 --- a/src/liblzma/api/lzma/block.h +++ b/src/liblzma/api/lzma/block.h @@ -448,7 +448,7 @@ extern LZMA_API(lzma_vli) lzma_block_total_size(const lzma_block *block) * - LZMA_MEM_ERROR * - LZMA_OPTIONS_ERROR * - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID - * that is not supported by this buid of liblzma. Initializing + * that is not supported by this build of liblzma. Initializing * the encoder failed. * - LZMA_PROG_ERROR */ diff --git a/src/liblzma/api/lzma/hardware.h b/src/liblzma/api/lzma/hardware.h index 5321d9af..47481f25 100644 --- a/src/liblzma/api/lzma/hardware.h +++ b/src/liblzma/api/lzma/hardware.h @@ -6,7 +6,7 @@ * ways to limit the resource usage. Applications linking against liblzma * need to do the actual decisions how much resources to let liblzma to use. * To ease making these decisions, liblzma provides functions to find out - * the relevant capabilities of the underlaying hardware. Currently there + * the relevant capabilities of the underlying hardware. Currently there * is only a function to find out the amount of RAM, but in the future there * will be also a function to detect how many concurrent threads the system * can run. diff --git a/src/liblzma/api/lzma/lzma12.h b/src/liblzma/api/lzma/lzma12.h index 4e32fa3a..df5f23b6 100644 --- a/src/liblzma/api/lzma/lzma12.h +++ b/src/liblzma/api/lzma/lzma12.h @@ -301,7 +301,7 @@ typedef struct { * (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 + * When the alignment is known, setting 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 pb=0 can * improve compression slightly. For UTF-16 text, pb=1 is a good diff --git a/src/liblzma/api/lzma/vli.h b/src/liblzma/api/lzma/vli.h index 9ad13f2e..1b7a952a 100644 --- a/src/liblzma/api/lzma/vli.h +++ b/src/liblzma/api/lzma/vli.h @@ -54,7 +54,7 @@ * * Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is * indicated with LZMA_VLI_UNKNOWN, which is the maximum value of the - * underlaying integer type. + * underlying integer type. * * lzma_vli will be uint64_t for the foreseeable future. If a bigger size * is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will diff --git a/src/liblzma/common/hardware_physmem.c b/src/liblzma/common/hardware_physmem.c index 7405b658..a2bbbe29 100644 --- a/src/liblzma/common/hardware_physmem.c +++ b/src/liblzma/common/hardware_physmem.c @@ -19,7 +19,7 @@ extern LZMA_API(uint64_t) lzma_physmem(void) { // It is simpler to make lzma_physmem() a wrapper for - // tuklib_physmem() than to hack appropriate symbol visiblity + // tuklib_physmem() than to hack appropriate symbol visibility // support for the tuklib modules. return tuklib_physmem(); } diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c index 007e1570..a41e8f33 100644 --- a/src/liblzma/common/index.c +++ b/src/liblzma/common/index.c @@ -105,7 +105,7 @@ typedef struct { typedef struct { - /// Every index_stream is a node in the tree of Sreams. + /// Every index_stream is a node in the tree of Streams. index_tree_node node; /// Number of this Stream (first one is 1) @@ -166,7 +166,7 @@ struct lzma_index_s { lzma_vli index_list_size; /// How many Records to allocate at once in lzma_index_append(). - /// This defaults to INDEX_GROUP_SIZE but can be overriden with + /// This defaults to INDEX_GROUP_SIZE but can be overridden with /// lzma_index_prealloc(). size_t prealloc; diff --git a/src/liblzma/common/stream_encoder_mt.c b/src/liblzma/common/stream_encoder_mt.c index 2efe44c2..448d871c 100644 --- a/src/liblzma/common/stream_encoder_mt.c +++ b/src/liblzma/common/stream_encoder_mt.c @@ -958,7 +958,7 @@ stream_encoder_mt_init(lzma_next_coder *next, const lzma_allocator *allocator, // 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 advatange of that. + // a side effect so we take advantage of that. if (lzma_raw_encoder_memusage(filters) == UINT64_MAX) return LZMA_OPTIONS_ERROR; diff --git a/src/liblzma/common/vli_decoder.c b/src/liblzma/common/vli_decoder.c index c181828b..af2799d1 100644 --- a/src/liblzma/common/vli_decoder.c +++ b/src/liblzma/common/vli_decoder.c @@ -72,7 +72,7 @@ lzma_vli_decode(lzma_vli *restrict vli, size_t *vli_pos, // corrupt. // // If we need bigger integers in future, old versions liblzma - // will confusingly indicate the file being corrupt istead of + // will confusingly indicate the file being corrupt instead of // unsupported. I suppose it's still better this way, because // in the foreseeable future (writing this in 2008) the only // reason why files would appear having over 63-bit integers diff --git a/src/liblzma/lz/lz_decoder.c b/src/liblzma/lz/lz_decoder.c index c7086440..bb21d0d0 100644 --- a/src/liblzma/lz/lz_decoder.c +++ b/src/liblzma/lz/lz_decoder.c @@ -241,7 +241,7 @@ lzma_lz_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, if (lz_options.dict_size < 4096) lz_options.dict_size = 4096; - // Make dictionary size a multipe of 16. Some LZ-based decoders like + // Make dictionary size a multiple of 16. Some LZ-based decoders like // LZMA use the lowest bits lzma_dict.pos to know the alignment of the // data. Aligned buffer is also good when memcpying from the // dictionary to the output buffer, since applications are diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in index a1fd19cf..a570a905 100644 --- a/src/scripts/xzgrep.in +++ b/src/scripts/xzgrep.in @@ -200,7 +200,7 @@ for i; do ) r=$? - # fail occured previously, nothing worse can happen + # fail occurred previously, nothing worse can happen test $res -gt 1 && continue test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \ diff --git a/src/xz/args.c b/src/xz/args.c index 341f29e1..688d7c3a 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -88,7 +88,7 @@ parse_block_list(char *str) // There is no string, that is, a comma follows // another comma. Use the previous value. // - // NOTE: We checked earler that the first char + // NOTE: We checked earlier that the first char // of the whole list cannot be a comma. assert(i > 0); opt_block_list[i] = opt_block_list[i - 1]; diff --git a/src/xz/coder.c b/src/xz/coder.c index f36d1bf2..f5e8e847 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -635,7 +635,7 @@ coder_normal(file_pair *pair) // only a single block is created. uint64_t block_remaining = UINT64_MAX; - // next_block_remining for when we are in single-threaded mode and + // next_block_remaining for when we are in single-threaded mode and // the Block in --block-list is larger than the --block-size=SIZE. uint64_t next_block_remaining = 0; @@ -718,7 +718,7 @@ coder_normal(file_pair *pair) || action == LZMA_FULL_BARRIER)) { if (action == LZMA_SYNC_FLUSH) { // Flushing completed. Write the pending data - // out immediatelly so that the reading side + // out immediately so that the reading side // can decompress everything compressed so far. if (io_write(pair, &out_buf, IO_BUFFER_SIZE - strm.avail_out)) diff --git a/src/xz/main.c b/src/xz/main.c index af550c45..d74caf37 100644 --- a/src/xz/main.c +++ b/src/xz/main.c @@ -159,7 +159,7 @@ main(int argc, char **argv) // Initialize handling of error/warning/other messages. message_init(); - // Set hardware-dependent default values. These can be overriden + // Set hardware-dependent default values. These can be overridden // on the command line, thus this must be done before args_parse(). hardware_init(); diff --git a/src/xz/mytime.h b/src/xz/mytime.h index ea291eed..4505724c 100644 --- a/src/xz/mytime.h +++ b/src/xz/mytime.h @@ -43,5 +43,5 @@ extern void mytime_set_flush_time(void); /// /// This returns -1 if no timed flushing is used. /// -/// The return value is inteded for use with poll(). +/// The return value is intended for use with poll(). extern int mytime_get_flush_timeout(void); diff --git a/src/xz/private.h b/src/xz/private.h index e61563ac..d97c22cc 100644 --- a/src/xz/private.h +++ b/src/xz/private.h @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////// // /// \file private.h -/// \brief Common includes, definions, and prototypes +/// \brief Common includes, definitions, and prototypes // // Author: Lasse Collin // diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 63087ca7..691bd2f8 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -1052,7 +1052,7 @@ if using more threads would exceed the memory usage limit. 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 overriden with the +can be overridden with the .BI \-\-block\-size= size option. .IP "" diff --git a/windows/build.bash b/windows/build.bash index 4a6a2843..9a3ebe0c 100644 --- a/windows/build.bash +++ b/windows/build.bash @@ -112,7 +112,7 @@ buildit() strip -vg "$DESTDIR/"*.a } -# Copy files and convert newlines from LF to CR+LF. Optinally add a suffix +# Copy files and convert newlines from LF to CR+LF. Optionally add a suffix # to the destination filename. # # The first argument is the destination directory. The second argument is -- cgit v1.2.3 From 8d4906262b45557ed164cd74adb270e6ef7f6f03 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 11 May 2019 20:54:12 +0300 Subject: xz: Update xz man page date. --- src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 691bd2f8..6b949640 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -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 "2018-11-22" "Tukaani" "XZ Utils" +.TH XZ 1 "2019-05-11" "Tukaani" "XZ Utils" . .SH NAME xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files -- cgit v1.2.3 From b4b83555c576e1d845a2b98a193b23c021437804 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 11 May 2019 20:56:08 +0300 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 64c88154..7f740bfb 100644 --- a/THANKS +++ b/THANKS @@ -23,6 +23,7 @@ has been important. :-) In alphabetical order: - Milo Casagrande - Marek Černocký - Tomer Chachamu + - Antoine Cœur - Gabi Davar - Chris Donawa - Andrew Dudman -- cgit v1.2.3 From 596ed3de4485a4b1d83b5fe506ae9d0a172139b4 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 13 May 2019 20:05:17 +0300 Subject: liblzma: Avoid memcpy(NULL, foo, 0) because it is undefined behavior. I should have always known this but I didn't. Here is an example as a reminder to myself: int mycopy(void *dest, void *src, size_t n) { memcpy(dest, src, n); return dest == NULL; } In the example, a compiler may assume that dest != NULL because passing NULL to memcpy() would be undefined behavior. Testing with GCC 8.2.1, mycopy(NULL, NULL, 0) returns 1 with -O0 and -O1. With -O2 the return value is 0 because the compiler infers that dest cannot be NULL because it was already used with memcpy() and thus the test for NULL gets optimized out. In liblzma, if a null-pointer was passed to memcpy(), there were no checks for NULL *after* the memcpy() call, so I cautiously suspect that it shouldn't have caused bad behavior in practice, but it's hard to be sure, and the problematic cases had to be fixed anyway. Thanks to Jeffrey Walton. --- src/liblzma/common/common.c | 6 +++++- src/liblzma/lz/lz_decoder.c | 12 +++++++++--- src/liblzma/simple/simple_coder.c | 10 +++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c index 57e3f8eb..0053a6aa 100644 --- a/src/liblzma/common/common.c +++ b/src/liblzma/common/common.c @@ -99,7 +99,11 @@ lzma_bufcpy(const uint8_t *restrict in, size_t *restrict in_pos, const size_t out_avail = out_size - *out_pos; const size_t copy_size = my_min(in_avail, out_avail); - memcpy(out + *out_pos, in + *in_pos, copy_size); + // Call memcpy() only if there is something to copy. If there is + // nothing to copy, in or out might be NULL and then the memcpy() + // call would trigger undefined behavior. + if (copy_size > 0) + memcpy(out + *out_pos, in + *in_pos, copy_size); *in_pos += copy_size; *out_pos += copy_size; diff --git a/src/liblzma/lz/lz_decoder.c b/src/liblzma/lz/lz_decoder.c index bb21d0d0..6c9024e2 100644 --- a/src/liblzma/lz/lz_decoder.c +++ b/src/liblzma/lz/lz_decoder.c @@ -91,11 +91,17 @@ decode_buffer(lzma_coder *coder, in, in_pos, in_size); // Copy the decoded data from the dictionary to the out[] - // buffer. + // buffer. Do it conditionally because out can be NULL + // (in which case copy_size is always 0). Calling memcpy() + // with a null-pointer is undefined even if the third + // argument is 0. const size_t copy_size = coder->dict.pos - dict_start; assert(copy_size <= out_size - *out_pos); - memcpy(out + *out_pos, coder->dict.buf + dict_start, - copy_size); + + if (copy_size > 0) + memcpy(out + *out_pos, coder->dict.buf + dict_start, + copy_size); + *out_pos += copy_size; // Reset the dictionary if so requested by coder->lz.code(). diff --git a/src/liblzma/simple/simple_coder.c b/src/liblzma/simple/simple_coder.c index 13ebabc7..4f499bef 100644 --- a/src/liblzma/simple/simple_coder.c +++ b/src/liblzma/simple/simple_coder.c @@ -118,7 +118,15 @@ simple_code(void *coder_ptr, const lzma_allocator *allocator, // coder->pos and coder->size yet. This way the coder can be // restarted if the next filter in the chain returns e.g. // LZMA_MEM_ERROR. - memcpy(out + *out_pos, coder->buffer + coder->pos, buf_avail); + // + // Do the memcpy() conditionally because out can be NULL + // (in which case buf_avail is always 0). Calling memcpy() + // with a null-pointer is undefined even if the third + // argument is 0. + if (buf_avail > 0) + memcpy(out + *out_pos, coder->buffer + coder->pos, + buf_avail); + *out_pos += buf_avail; // Copy/Encode/Decode more data to out[]. -- cgit v1.2.3 From 29afef03486d461c23f57150ac5436684bff7811 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Jun 2019 18:41:16 +0300 Subject: tuklib_integer: Improve unaligned memory access. Now memcpy() or GNU C packed structs for unaligned access instead of type punning. See the comment in this commit for details. Avoiding type punning with unaligned access is needed to silence gcc -fsanitize=undefined. New functions: unaliged_readXXne and unaligned_writeXXne where XX is 16, 32, or 64. --- src/common/tuklib_integer.h | 180 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 168 insertions(+), 12 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index b1e84d5c..e2c7b7c8 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -42,6 +42,7 @@ #define TUKLIB_INTEGER_H #include "tuklib_common.h" +#include //////////////////////////////////////// @@ -274,61 +275,211 @@ write64ne(uint8_t *buf, uint64_t num) // Unaligned reads and writes // //////////////////////////////// +// The traditional way of casting e.g. *(const uint16_t *)uint8_pointer +// is bad (at least) because compilers can emit vector instructions that +// require aligned pointers even if non-vector instructions work with +// unaligned pointers. +// +// Using memcpy() is the standard compliant way to do unaligned access. +// Many modern compilers inline it so there is no function call overhead. +// +// However, it seems that some compilers generate better code with a cast +// to a packed struct than with memcpy(): +// - Old GCC versions (early 4.x and older) on x86 +// - GCC <= 8.2 (and possibly newer) on ARMv5 (but ARMv5 is old and maybe +// doesn't matter so much) +// - GCC <= 5.x on ARMv7 (on 4.x neither is great but packed is less bad) +// - Intel C Compiler <= 19 (and possibly newer) +// +// GCC on ARMv6 is weird: +// - GCC >= 6.x is better with memcpy() than with a packed struct. +// - On GCC < 6 neither method is good, but packed seems less bad. +// +// https://gcc.godbolt.org/ was useful for seeing what kind of code is +// generated by different compilers on different archs. Note that one +// may need to try a little less trivial code than than these functions +// alone to spot differences. For example this is better with packed method +// on Intel C Compiler 19: +// +// int foo(const uint8_t *a, const uint8_t *b) +// { +// return unaligned_read16ne(a) == unaligned_read16ne(b); +// } +// +// Based on the above information, prefer the memcpy() method in +// general (including all Clang versions), but use the packed struct +// with GCC 5.x and older and with the Intel C Compiler. This isn't +// optimal but at least it covers some known special cases. +#if defined(__GNUC__) && !defined(__clang__) \ + && (__GNUC__ < 6 || defined(__INTEL_COMPILER)) +# define TUKLIB_UNALIGNED_WITH_PACKED 1 +#endif + + +static inline uint16_t +unaligned_read16ne(const uint8_t *buf) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint16_t v; }; + const struct s *p = (const struct s *)buf; + return p->v; +#else + uint16_t num; + memcpy(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline uint32_t +unaligned_read32ne(const uint8_t *buf) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint32_t v; }; + const struct s *p = (const struct s *)buf; + return p->v; +#else + uint32_t num; + memcpy(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline uint64_t +unaligned_read64ne(const uint8_t *buf) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint64_t v; }; + const struct s *p = (const struct s *)buf; + return p->v; +#else + uint64_t num; + memcpy(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline void +unaligned_write16ne(uint8_t *buf, uint16_t num) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint16_t v; }; + struct s *p = (struct s *)buf; + p->v = num; +#else + memcpy(buf, &num, sizeof(num)); +#endif + return; +} + + +static inline void +unaligned_write32ne(uint8_t *buf, uint32_t num) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint32_t v; }; + struct s *p = (struct s *)buf; + p->v = num; +#else + memcpy(buf, &num, sizeof(num)); +#endif + return; +} + + +static inline void +unaligned_write64ne(uint8_t *buf, uint64_t num) +{ +#ifdef TUKLIB_UNALIGNED_WITH_PACKED + struct __attribute__((__packed__)) s { uint64_t v; }; + struct s *p = (struct s *)buf; + p->v = num; +#else + memcpy(buf, &num, sizeof(num)); +#endif + return; +} + + // NOTE: TUKLIB_FAST_UNALIGNED_ACCESS indicates only support for 16-bit and // 32-bit unaligned integer loads and stores. It's possible that 64-bit // unaligned access doesn't work or is slower than byte-by-byte access. // Since unaligned 64-bit is probably not needed as often as 16-bit or // 32-bit, we simply don't support 64-bit unaligned access for now. -#ifdef TUKLIB_FAST_UNALIGNED_ACCESS -# define unaligned_read16be read16be -# define unaligned_read16le read16le -# define unaligned_read32be read32be -# define unaligned_read32le read32le -# define unaligned_write16be write16be -# define unaligned_write16le write16le -# define unaligned_write32be write32be -# define unaligned_write32le write32le - -#else static inline uint16_t unaligned_read16be(const uint8_t *buf) { +#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) + return conv16be(unaligned_read16ne(buf)); +#else uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1]; return num; +#endif } static inline uint16_t unaligned_read16le(const uint8_t *buf) { +#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) + return conv16le(unaligned_read16ne(buf)); +#else uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8); return num; +#endif } static inline uint32_t unaligned_read32be(const uint8_t *buf) { +#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) + return conv32be(unaligned_read32ne(buf)); +#else uint32_t num = (uint32_t)buf[0] << 24; num |= (uint32_t)buf[1] << 16; num |= (uint32_t)buf[2] << 8; num |= (uint32_t)buf[3]; return num; +#endif } static inline uint32_t unaligned_read32le(const uint8_t *buf) { +#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) + return conv32le(unaligned_read32ne(buf)); +#else uint32_t num = (uint32_t)buf[0]; num |= (uint32_t)buf[1] << 8; num |= (uint32_t)buf[2] << 16; num |= (uint32_t)buf[3] << 24; return num; +#endif } +#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) +// Like in the aligned case, these need to be macros. +# define unaligned_write16be(buf, num) \ + unaligned_write16ne(buf, conv16be(num)) +# define unaligned_write32be(buf, num) \ + unaligned_write32ne(buf, conv32be(num)) +#endif + +#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) +# define unaligned_write16le(buf, num) \ + unaligned_write16ne(buf, conv16le(num)) +# define unaligned_write32le(buf, num) \ + unaligned_write32ne(buf, conv32le(num)) +#endif + + +#ifndef unaligned_write16be static inline void unaligned_write16be(uint8_t *buf, uint16_t num) { @@ -336,8 +487,10 @@ unaligned_write16be(uint8_t *buf, uint16_t num) buf[1] = (uint8_t)num; return; } +#endif +#ifndef unaligned_write16le static inline void unaligned_write16le(uint8_t *buf, uint16_t num) { @@ -345,8 +498,10 @@ unaligned_write16le(uint8_t *buf, uint16_t num) buf[1] = (uint8_t)(num >> 8); return; } +#endif +#ifndef unaligned_write32be static inline void unaligned_write32be(uint8_t *buf, uint32_t num) { @@ -356,8 +511,10 @@ unaligned_write32be(uint8_t *buf, uint32_t num) buf[3] = (uint8_t)num; return; } +#endif +#ifndef unaligned_write32le static inline void unaligned_write32le(uint8_t *buf, uint32_t num) { @@ -367,7 +524,6 @@ unaligned_write32le(uint8_t *buf, uint32_t num) buf[3] = (uint8_t)(num >> 24); return; } - #endif -- cgit v1.2.3 From efbf6e5f0932e6c1a4250f91ee99059f449f2470 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Jun 2019 19:01:21 +0300 Subject: liblzma: Use unaligned_readXXne functions instead of type punning. Now gcc -fsanitize=undefined should be clean. Thanks to Jeffrey Walton. --- src/liblzma/common/memcmplen.h | 12 ++++++------ src/liblzma/lzma/lzma_encoder_private.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h index c1efc9e2..62e79832 100644 --- a/src/liblzma/common/memcmplen.h +++ b/src/liblzma/common/memcmplen.h @@ -61,8 +61,8 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // to __builtin_clzll(). #define LZMA_MEMCMPLEN_EXTRA 8 while (len < limit) { - const uint64_t x = *(const uint64_t *)(buf1 + len) - - *(const uint64_t *)(buf2 + len); + const uint64_t x = unaligned_read64ne(buf1 + len) + - unaligned_read64ne(buf2 + len); if (x != 0) { # if defined(_M_X64) // MSVC or Intel C compiler on Windows unsigned long tmp; @@ -120,8 +120,8 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // Generic 32-bit little endian method # define LZMA_MEMCMPLEN_EXTRA 4 while (len < limit) { - uint32_t x = *(const uint32_t *)(buf1 + len) - - *(const uint32_t *)(buf2 + len); + uint32_t x = unaligned_read32ne(buf1 + len) + - unaligned_read32ne(buf2 + len); if (x != 0) { if ((x & 0xFFFF) == 0) { len += 2; @@ -143,8 +143,8 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // Generic 32-bit big endian method # define LZMA_MEMCMPLEN_EXTRA 4 while (len < limit) { - uint32_t x = *(const uint32_t *)(buf1 + len) - ^ *(const uint32_t *)(buf2 + len); + uint32_t x = unaligned_read32ne(buf1 + len) + ^ unaligned_read32ne(buf2 + len); if (x != 0) { if ((x & 0xFFFF0000) == 0) { len += 2; diff --git a/src/liblzma/lzma/lzma_encoder_private.h b/src/liblzma/lzma/lzma_encoder_private.h index a2da969f..e3d79429 100644 --- a/src/liblzma/lzma/lzma_encoder_private.h +++ b/src/liblzma/lzma/lzma_encoder_private.h @@ -26,7 +26,7 @@ // reason to not use it when it is supported. #ifdef TUKLIB_FAST_UNALIGNED_ACCESS # define not_equal_16(a, b) \ - (*(const uint16_t *)(a) != *(const uint16_t *)(b)) + (unaligned_read16ne(a) != unaligned_read16ne(b)) #else # define not_equal_16(a, b) \ ((a)[0] != (b)[0] || (a)[1] != (b)[1]) -- cgit v1.2.3 From 412791486dfb430219d8e30bcbebbfc57a99484a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Jun 2019 21:30:03 +0300 Subject: tuklib_integer: Cleanup MSVC-specific code. --- src/common/tuklib_integer.h | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index e2c7b7c8..1524c61e 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -546,11 +546,9 @@ bsr32(uint32_t n) __asm__("bsrl %1, %0" : "=r" (i) : "rm" (n)); return i; -#elif defined(_MSC_VER) && _MSC_VER >= 1400 - // MSVC isn't supported by tuklib, but since this code exists, - // it doesn't hurt to have it here anyway. - uint32_t i; - _BitScanReverse((DWORD *)&i, n); +#elif defined(_MSC_VER) + unsigned long i; + _BitScanReverse(&i, n); return i; #else @@ -600,9 +598,9 @@ clz32(uint32_t n) : "=r" (i) : "rm" (n)); return i; -#elif defined(_MSC_VER) && _MSC_VER >= 1400 - uint32_t i; - _BitScanReverse((DWORD *)&i, n); +#elif defined(_MSC_VER) + unsigned long i; + _BitScanReverse(&i, n); return i ^ 31U; #else @@ -650,9 +648,9 @@ ctz32(uint32_t n) __asm__("bsfl %1, %0" : "=r" (i) : "rm" (n)); return i; -#elif defined(_MSC_VER) && _MSC_VER >= 1400 - uint32_t i; - _BitScanForward((DWORD *)&i, n); +#elif defined(_MSC_VER) + unsigned long i; + _BitScanForward(&i, n); return i; #else -- cgit v1.2.3 From 94aa3fb568fe41dd4925a961966ed5cf8213bd1f Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Jun 2019 21:36:13 +0300 Subject: liblzma: memcmplen: Use ctz32() from tuklib_integer.h. The same compiler-specific #ifdefs are already in tuklib_integer.h --- src/liblzma/common/memcmplen.h | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h index 62e79832..25debf6a 100644 --- a/src/liblzma/common/memcmplen.h +++ b/src/liblzma/common/memcmplen.h @@ -99,15 +99,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, _mm_loadu_si128((const __m128i *)(buf2 + len)))); if (x != 0) { -# if defined(__INTEL_COMPILER) - len += _bit_scan_forward(x); -# elif defined(_MSC_VER) - unsigned long tmp; - _BitScanForward(&tmp, x); - len += tmp; -# else - len += __builtin_ctz(x); -# endif + len += ctz32(x); return my_min(len, limit); } -- cgit v1.2.3 From ce59b34ec9ac344d62a57cad5f94f695f42cdaee Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Jun 2019 21:41:55 +0300 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 7f740bfb..27174935 100644 --- a/THANKS +++ b/THANKS @@ -109,6 +109,7 @@ has been important. :-) In alphabetical order: - Patrick J. Volkerding - Martin Väth - Adam Walling + - Jeffrey Walton - Christian Weisgerber - Bert Wesarg - Fredrik Wikstrom -- cgit v1.2.3 From 6a73a7889587aa394e236c7e9e4f870b44851036 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 2 Jun 2019 00:50:59 +0300 Subject: liblzma: Fix one more unaligned read to use unaligned_read16ne(). --- src/liblzma/lz/lz_encoder_hash.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/liblzma/lz/lz_encoder_hash.h b/src/liblzma/lz/lz_encoder_hash.h index 342a333d..f238f9d9 100644 --- a/src/liblzma/lz/lz_encoder_hash.h +++ b/src/liblzma/lz/lz_encoder_hash.h @@ -39,7 +39,7 @@ // Endianness doesn't matter in hash_2_calc() (no effect on the output). #ifdef TUKLIB_FAST_UNALIGNED_ACCESS # define hash_2_calc() \ - const uint32_t hash_value = *(const uint16_t *)(cur) + const uint32_t hash_value = unaligned_read16ne(cur) #else # define hash_2_calc() \ const uint32_t hash_value \ -- cgit v1.2.3 From 85da31d8b882b8b9671ab3e3d74d88bd945cd0bb Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 3 Jun 2019 20:41:54 +0300 Subject: liblzma: Fix comments. Thanks to Bruce Stark. --- src/liblzma/common/alone_encoder.c | 4 ++-- src/liblzma/common/block_util.c | 2 +- src/liblzma/common/common.c | 2 +- src/liblzma/common/filter_common.h | 2 +- src/liblzma/common/filter_decoder.h | 2 +- src/liblzma/common/filter_flags_encoder.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/liblzma/common/alone_encoder.c b/src/liblzma/common/alone_encoder.c index 4853cfd1..402bebce 100644 --- a/src/liblzma/common/alone_encoder.c +++ b/src/liblzma/common/alone_encoder.c @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file alone_decoder.c -/// \brief Decoder for LZMA_Alone files +/// \file alone_encoder.c +/// \brief Encoder for LZMA_Alone files // // Author: Lasse Collin // diff --git a/src/liblzma/common/block_util.c b/src/liblzma/common/block_util.c index 00c7fe8d..acb31114 100644 --- a/src/liblzma/common/block_util.c +++ b/src/liblzma/common/block_util.c @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file block_header.c +/// \file block_util.c /// \brief Utility functions to handle lzma_block // // Author: Lasse Collin diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c index 0053a6aa..cf714e5e 100644 --- a/src/liblzma/common/common.c +++ b/src/liblzma/common/common.c @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file common.h +/// \file common.c /// \brief Common functions needed in many places in liblzma // // Author: Lasse Collin diff --git a/src/liblzma/common/filter_common.h b/src/liblzma/common/filter_common.h index 42a26a24..9390305c 100644 --- a/src/liblzma/common/filter_common.h +++ b/src/liblzma/common/filter_common.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file filter_common.c +/// \file filter_common.h /// \brief Filter-specific stuff common for both encoder and decoder // // Author: Lasse Collin diff --git a/src/liblzma/common/filter_decoder.h b/src/liblzma/common/filter_decoder.h index a2e255fe..2dac6028 100644 --- a/src/liblzma/common/filter_decoder.h +++ b/src/liblzma/common/filter_decoder.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file filter_decoder.c +/// \file filter_decoder.h /// \brief Filter ID mapping to filter-specific functions // // Author: Lasse Collin diff --git a/src/liblzma/common/filter_flags_encoder.c b/src/liblzma/common/filter_flags_encoder.c index d110566d..b57b9fd8 100644 --- a/src/liblzma/common/filter_flags_encoder.c +++ b/src/liblzma/common/filter_flags_encoder.c @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////// // /// \file filter_flags_encoder.c -/// \brief Decodes a Filter Flags field +/// \brief Encodes a Filter Flags field // // Author: Lasse Collin // -- cgit v1.2.3 From 612c88dfc08e2c572623954ecfde541d21c84882 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 3 Jun 2019 20:44:19 +0300 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 27174935..6000298f 100644 --- a/THANKS +++ b/THANKS @@ -99,6 +99,7 @@ has been important. :-) In alphabetical order: - Stuart Shelton - Sebastian Andrzej Siewior - Brad Smith + - Bruce Stark - Pippijn van Steenhoven - Jonathan Stott - Dan Stromberg -- cgit v1.2.3 From ed1a9d33984a3a37ae9a775a46859850d98ea4d0 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 20 Jun 2019 19:40:30 +0300 Subject: tuklib_integer: Fix usage of conv macros. Use a temporary variable instead of e.g. conv32le(unaligned_read32ne(buf)) because the macro can evaluate its argument multiple times. --- src/common/tuklib_integer.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index 1524c61e..d5c813c0 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -413,7 +413,8 @@ static inline uint16_t unaligned_read16be(const uint8_t *buf) { #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - return conv16be(unaligned_read16ne(buf)); + uint16_t num = unaligned_read16ne(buf); + return conv16be(num); #else uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1]; return num; @@ -425,7 +426,8 @@ static inline uint16_t unaligned_read16le(const uint8_t *buf) { #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - return conv16le(unaligned_read16ne(buf)); + uint16_t num = unaligned_read16ne(buf); + return conv16le(num); #else uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8); return num; @@ -437,7 +439,8 @@ static inline uint32_t unaligned_read32be(const uint8_t *buf) { #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - return conv32be(unaligned_read32ne(buf)); + uint32_t num = unaligned_read32ne(buf); + return conv32be(num); #else uint32_t num = (uint32_t)buf[0] << 24; num |= (uint32_t)buf[1] << 16; @@ -452,7 +455,8 @@ static inline uint32_t unaligned_read32le(const uint8_t *buf) { #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - return conv32le(unaligned_read32ne(buf)); + uint32_t num = unaligned_read32ne(buf); + return conv32le(num); #else uint32_t num = (uint32_t)buf[0]; num |= (uint32_t)buf[1] << 8; -- cgit v1.2.3 From 4ff87ddf80ed7cb233444cddd86ab1940b5b55ec Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 19:33:55 +0300 Subject: tuklib_integer: Silence warnings from -Wsign-conversion. --- src/common/tuklib_integer.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index d5c813c0..52564481 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -543,7 +543,7 @@ bsr32(uint32_t n) // multiple architectures. On x86, __builtin_clz() ^ 31U becomes // either plain BSR (so the XOR gets optimized away) or LZCNT and // XOR (if -march indicates that SSE4a instructions are supported). - return __builtin_clz(n) ^ 31U; + return (uint32_t)__builtin_clz(n) ^ 31U; #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) uint32_t i; @@ -593,7 +593,7 @@ clz32(uint32_t n) return _bit_scan_reverse(n) ^ 31U; #elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX == UINT32_MAX - return __builtin_clz(n); + return (uint32_t)__builtin_clz(n); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) uint32_t i; @@ -645,7 +645,7 @@ ctz32(uint32_t n) return _bit_scan_forward(n); #elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX >= UINT32_MAX - return __builtin_ctz(n); + return (uint32_t)__builtin_ctz(n); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) uint32_t i; -- cgit v1.2.3 From a45d1a5374ceb22e23255b0b595b9e641e9860af Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 21:38:56 +0300 Subject: liblzma: Fix warnings from -Wsign-conversion. Also, more parentheses were added to the literal_subcoder macro in lzma_comon.h (better style but no functional change in the current usage). --- src/liblzma/common/block_header_decoder.c | 2 +- src/liblzma/delta/delta_decoder.c | 2 +- src/liblzma/lzma/fastpos.h | 2 +- src/liblzma/lzma/lzma2_decoder.c | 8 ++++---- src/liblzma/lzma/lzma_common.h | 3 ++- src/liblzma/lzma/lzma_decoder.c | 16 ++++++++-------- src/liblzma/simple/arm.c | 6 +++--- src/liblzma/simple/armthumb.c | 8 ++++---- src/liblzma/simple/ia64.c | 2 +- src/liblzma/simple/powerpc.c | 9 +++++---- src/liblzma/simple/x86.c | 2 +- 11 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/liblzma/common/block_header_decoder.c b/src/liblzma/common/block_header_decoder.c index 1dd982f6..449edaa5 100644 --- a/src/liblzma/common/block_header_decoder.c +++ b/src/liblzma/common/block_header_decoder.c @@ -98,7 +98,7 @@ lzma_block_header_decode(lzma_block *block, block->uncompressed_size = LZMA_VLI_UNKNOWN; // Filter Flags - const size_t filter_count = (in[1] & 3) + 1; + const size_t filter_count = (in[1] & 3U) + 1; for (size_t i = 0; i < filter_count; ++i) { const lzma_ret ret = lzma_filter_flags_decode( &block->filters[i], allocator, diff --git a/src/liblzma/delta/delta_decoder.c b/src/liblzma/delta/delta_decoder.c index 6859afa5..13d8a28f 100644 --- a/src/liblzma/delta/delta_decoder.c +++ b/src/liblzma/delta/delta_decoder.c @@ -70,7 +70,7 @@ lzma_delta_props_decode(void **options, const lzma_allocator *allocator, return LZMA_MEM_ERROR; opt->type = LZMA_DELTA_TYPE_BYTE; - opt->dist = props[0] + 1; + opt->dist = props[0] + 1U; *options = opt; diff --git a/src/liblzma/lzma/fastpos.h b/src/liblzma/lzma/fastpos.h index a3feea58..cba442c2 100644 --- a/src/liblzma/lzma/fastpos.h +++ b/src/liblzma/lzma/fastpos.h @@ -101,7 +101,7 @@ extern const uint8_t lzma_fastpos[1 << FASTPOS_BITS]; (UINT32_C(1) << (FASTPOS_BITS + fastpos_shift(extra, n))) #define fastpos_result(dist, extra, n) \ - lzma_fastpos[(dist) >> fastpos_shift(extra, n)] \ + (uint32_t)(lzma_fastpos[(dist) >> fastpos_shift(extra, n)]) \ + 2 * fastpos_shift(extra, n) diff --git a/src/liblzma/lzma/lzma2_decoder.c b/src/liblzma/lzma/lzma2_decoder.c index 878c870a..cf1b5110 100644 --- a/src/liblzma/lzma/lzma2_decoder.c +++ b/src/liblzma/lzma/lzma2_decoder.c @@ -136,7 +136,7 @@ lzma2_decode(void *coder_ptr, lzma_dict *restrict dict, break; case SEQ_UNCOMPRESSED_2: - coder->uncompressed_size += in[(*in_pos)++] + 1; + coder->uncompressed_size += in[(*in_pos)++] + 1U; coder->sequence = SEQ_COMPRESSED_0; coder->lzma.set_uncompressed(coder->lzma.coder, coder->uncompressed_size); @@ -148,7 +148,7 @@ lzma2_decode(void *coder_ptr, lzma_dict *restrict dict, break; case SEQ_COMPRESSED_1: - coder->compressed_size += in[(*in_pos)++] + 1; + coder->compressed_size += in[(*in_pos)++] + 1U; coder->sequence = coder->next_sequence; break; @@ -297,8 +297,8 @@ lzma_lzma2_props_decode(void **options, const lzma_allocator *allocator, if (props[0] == 40) { opt->dict_size = UINT32_MAX; } else { - opt->dict_size = 2 | (props[0] & 1); - opt->dict_size <<= props[0] / 2 + 11; + opt->dict_size = 2 | (props[0] & 1U); + opt->dict_size <<= props[0] / 2U + 11; } opt->preset_dict = NULL; diff --git a/src/liblzma/lzma/lzma_common.h b/src/liblzma/lzma/lzma_common.h index 09efd387..9d040d95 100644 --- a/src/liblzma/lzma/lzma_common.h +++ b/src/liblzma/lzma/lzma_common.h @@ -122,7 +122,8 @@ typedef enum { /// byte; and /// - the highest literal_context_bits bits of the previous byte. #define literal_subcoder(probs, lc, lp_mask, pos, prev_byte) \ - ((probs)[(((pos) & lp_mask) << lc) + ((prev_byte) >> (8 - lc))]) + ((probs)[(((pos) & (lp_mask)) << (lc)) \ + + ((uint32_t)(prev_byte) >> (8U - (lc)))]) static inline void diff --git a/src/liblzma/lzma/lzma_decoder.c b/src/liblzma/lzma/lzma_decoder.c index d0f29b76..9af500f0 100644 --- a/src/liblzma/lzma/lzma_decoder.c +++ b/src/liblzma/lzma/lzma_decoder.c @@ -398,7 +398,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr, // ("match byte") to "len" to minimize the // number of variables we need to store // between decoder calls. - len = dict_get(&dict, rep0) << 1; + len = (uint32_t)(dict_get(&dict, rep0)) << 1; // The usage of "offset" allows omitting some // branches, which should give tiny speed @@ -569,7 +569,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr, #ifdef HAVE_SMALL do { rc_bit(probs[symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_DIST_MODEL); } while (++offset < limit); #else @@ -577,25 +577,25 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr, case 5: assert(offset == 0); rc_bit(probs[symbol], , - rep0 += 1, + rep0 += 1U, SEQ_DIST_MODEL); ++offset; --limit; case 4: rc_bit(probs[symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_DIST_MODEL); ++offset; --limit; case 3: rc_bit(probs[symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_DIST_MODEL); ++offset; --limit; case 2: rc_bit(probs[symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_DIST_MODEL); ++offset; --limit; @@ -607,7 +607,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr, // the unneeded updating of // "symbol". rc_bit_last(probs[symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_DIST_MODEL); } #endif @@ -635,7 +635,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr, do { rc_bit(coder->pos_align[ symbol], , - rep0 += 1 << offset, + rep0 += 1U << offset, SEQ_ALIGN); } while (++offset < ALIGN_BITS); #else diff --git a/src/liblzma/simple/arm.c b/src/liblzma/simple/arm.c index 181d0e3b..ff5073ae 100644 --- a/src/liblzma/simple/arm.c +++ b/src/liblzma/simple/arm.c @@ -22,9 +22,9 @@ arm_code(void *simple lzma_attribute((__unused__)), size_t i; for (i = 0; i + 4 <= size; i += 4) { if (buffer[i + 3] == 0xEB) { - uint32_t src = (buffer[i + 2] << 16) - | (buffer[i + 1] << 8) - | (buffer[i + 0]); + uint32_t src = ((uint32_t)(buffer[i + 2]) << 16) + | ((uint32_t)(buffer[i + 1]) << 8) + | (uint32_t)(buffer[i + 0]); src <<= 2; uint32_t dest; diff --git a/src/liblzma/simple/armthumb.c b/src/liblzma/simple/armthumb.c index eab4862d..a8da334a 100644 --- a/src/liblzma/simple/armthumb.c +++ b/src/liblzma/simple/armthumb.c @@ -23,10 +23,10 @@ armthumb_code(void *simple lzma_attribute((__unused__)), for (i = 0; i + 4 <= size; i += 2) { if ((buffer[i + 1] & 0xF8) == 0xF0 && (buffer[i + 3] & 0xF8) == 0xF8) { - uint32_t src = ((buffer[i + 1] & 0x7) << 19) - | (buffer[i + 0] << 11) - | ((buffer[i + 3] & 0x7) << 8) - | (buffer[i + 2]); + uint32_t src = (((uint32_t)(buffer[i + 1]) & 7) << 19) + | ((uint32_t)(buffer[i + 0]) << 11) + | (((uint32_t)(buffer[i + 3]) & 7) << 8) + | (uint32_t)(buffer[i + 2]); src <<= 1; diff --git a/src/liblzma/simple/ia64.c b/src/liblzma/simple/ia64.c index 580529e8..6492d0a3 100644 --- a/src/liblzma/simple/ia64.c +++ b/src/liblzma/simple/ia64.c @@ -70,7 +70,7 @@ ia64_code(void *simple lzma_attribute((__unused__)), inst_norm |= (uint64_t)(dest & 0x100000) << (36 - 20); - instruction &= (1 << bit_res) - 1; + instruction &= (1U << bit_res) - 1; instruction |= (inst_norm << bit_res); for (size_t j = 0; j < 6; j++) diff --git a/src/liblzma/simple/powerpc.c b/src/liblzma/simple/powerpc.c index 54dfbf10..0b60e9b3 100644 --- a/src/liblzma/simple/powerpc.c +++ b/src/liblzma/simple/powerpc.c @@ -25,10 +25,11 @@ powerpc_code(void *simple lzma_attribute((__unused__)), if ((buffer[i] >> 2) == 0x12 && ((buffer[i + 3] & 3) == 1)) { - const uint32_t src = ((buffer[i + 0] & 3) << 24) - | (buffer[i + 1] << 16) - | (buffer[i + 2] << 8) - | (buffer[i + 3] & (~3)); + const uint32_t src + = (((uint32_t)(buffer[i + 0]) & 3) << 24) + | ((uint32_t)(buffer[i + 1]) << 16) + | ((uint32_t)(buffer[i + 2]) << 8) + | ((uint32_t)(buffer[i + 3]) & ~UINT32_C(3)); uint32_t dest; if (is_encoder) diff --git a/src/liblzma/simple/x86.c b/src/liblzma/simple/x86.c index 0b14807e..0e78909c 100644 --- a/src/liblzma/simple/x86.c +++ b/src/liblzma/simple/x86.c @@ -97,7 +97,7 @@ x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder, if (!Test86MSByte(b)) break; - src = dest ^ ((1 << (32 - i * 8)) - 1); + src = dest ^ ((1U << (32 - i * 8)) - 1); } buffer[buffer_pos + 4] -- cgit v1.2.3 From a502dd1d000b598406637d452f535f4bbd43e2a4 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 21:40:47 +0300 Subject: xzdec: Fix warnings from -Wsign-conversion. --- src/xzdec/xzdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xzdec/xzdec.c b/src/xzdec/xzdec.c index 5cb7530a..c1bd1998 100644 --- a/src/xzdec/xzdec.c +++ b/src/xzdec/xzdec.c @@ -37,7 +37,7 @@ /// Error messages are suppressed if this is zero, which is the case when /// --quiet has been given at least twice. -static unsigned int display_errors = 2; +static int display_errors = 2; static void lzma_attribute((__format__(__printf__, 1, 2))) -- cgit v1.2.3 From 7c65ae0f5f2e2431f88621e8fe6d1dc7907e30c1 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 22:27:45 +0300 Subject: tuklib_cpucores: Silence warnings from -Wsign-conversion. --- src/common/tuklib_cpucores.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/common/tuklib_cpucores.c b/src/common/tuklib_cpucores.c index c16e188d..cc968dd2 100644 --- a/src/common/tuklib_cpucores.c +++ b/src/common/tuklib_cpucores.c @@ -56,14 +56,14 @@ tuklib_cpucores(void) #elif defined(TUKLIB_CPUCORES_SCHED_GETAFFINITY) cpu_set_t cpu_mask; if (sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask) == 0) - ret = CPU_COUNT(&cpu_mask); + ret = (uint32_t)CPU_COUNT(&cpu_mask); #elif defined(TUKLIB_CPUCORES_CPUSET) cpuset_t set; if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, sizeof(set), &set) == 0) { # ifdef CPU_COUNT - ret = CPU_COUNT(&set); + ret = (uint32_t)CPU_COUNT(&set); # else for (unsigned i = 0; i < CPU_SETSIZE; ++i) if (CPU_ISSET(i, &set)) @@ -77,7 +77,7 @@ tuklib_cpucores(void) size_t cpus_size = sizeof(cpus); if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1 && cpus_size == sizeof(cpus) && cpus > 0) - ret = cpus; + ret = (uint32_t)cpus; #elif defined(TUKLIB_CPUCORES_SYSCONF) # ifdef _SC_NPROCESSORS_ONLN @@ -88,12 +88,12 @@ tuklib_cpucores(void) const long cpus = sysconf(_SC_NPROC_ONLN); # endif if (cpus > 0) - ret = cpus; + ret = (uint32_t)cpus; #elif defined(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) struct pst_dynamic pst; if (pstat_getdynamic(&pst, sizeof(pst), 1, 0) != -1) - ret = pst.psd_proc_cnt; + ret = (uint32_t)pst.psd_proc_cnt; #endif return ret; -- cgit v1.2.3 From 37df03ce52ce53710e1513387648763f8a744154 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 23:19:34 +0300 Subject: xz: Fix some of the warnings from -Wsign-conversion. --- src/xz/args.c | 4 ++-- src/xz/coder.c | 4 ++-- src/xz/file_io.c | 5 +++-- src/xz/message.c | 4 ++-- src/xz/mytime.c | 4 ++-- src/xz/options.c | 2 +- src/xz/util.c | 4 ++-- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/xz/args.c b/src/xz/args.c index 688d7c3a..9238fb32 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -218,7 +218,7 @@ parse_real(args_info *args, int argc, char **argv) // Compression preset (also for decompression if --format=raw) case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - coder_set_preset(c - '0'); + coder_set_preset((uint32_t)(c - '0')); break; // --memlimit-compress @@ -683,7 +683,7 @@ args_parse(args_info *args, int argc, char **argv) // We got at least one filename from the command line, or // --files or --files0 was specified. args->arg_names = argv + optind; - args->arg_count = argc - optind; + args->arg_count = (unsigned int)(argc - optind); } return; diff --git a/src/xz/coder.c b/src/xz/coder.c index f5e8e847..1cd03857 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -905,8 +905,8 @@ coder_run(const char *filename) const bool is_passthru = init_ret == CODER_INIT_PASSTHRU; const uint64_t in_size - = pair->src_st.st_size <= 0 - ? 0 : pair->src_st.st_size; + = pair->src_st.st_size <= 0 + ? 0 : (uint64_t)(pair->src_st.st_size); message_progress_start(&strm, is_passthru, in_size); diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 041bed88..2352b297 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -360,13 +360,14 @@ io_copy_attrs(const file_pair *pair) // Try changing the owner of the file. If we aren't root or the owner // isn't already us, fchown() probably doesn't succeed. We warn // about failing fchown() only if we are root. - if (fchown(pair->dest_fd, pair->src_st.st_uid, -1) && warn_fchown) + if (fchown(pair->dest_fd, pair->src_st.st_uid, (gid_t)(-1)) + && warn_fchown) message_warning(_("%s: Cannot set the file owner: %s"), pair->dest_name, strerror(errno)); mode_t mode; - if (fchown(pair->dest_fd, -1, pair->src_st.st_gid)) { + if (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: diff --git a/src/xz/message.c b/src/xz/message.c index 50a0b148..aa915d2d 100644 --- a/src/xz/message.c +++ b/src/xz/message.c @@ -440,8 +440,8 @@ progress_remaining(uint64_t in_pos, uint64_t elapsed) // Calculate the estimate. Don't give an estimate of zero seconds, // since it is possible that all the input has been already passed // to the library, but there is still quite a bit of output pending. - uint32_t remaining = (double)(expected_in_size - in_pos) - * ((double)(elapsed) / 1000.0) / (double)(in_pos); + uint32_t remaining = (uint32_t)((double)(expected_in_size - in_pos) + * ((double)(elapsed) / 1000.0) / (double)(in_pos)); if (remaining < 1) remaining = 1; diff --git a/src/xz/mytime.c b/src/xz/mytime.c index 4be184fd..95138840 100644 --- a/src/xz/mytime.c +++ b/src/xz/mytime.c @@ -39,11 +39,11 @@ mytime_now(void) while (clock_gettime(clk_id, &tv)) clk_id = CLOCK_REALTIME; - return (uint64_t)(tv.tv_sec) * UINT64_C(1000) + tv.tv_nsec / 1000000; + return (uint64_t)tv.tv_sec * 1000 + (uint64_t)(tv.tv_nsec / 1000000); #else struct timeval tv; gettimeofday(&tv, NULL); - return (uint64_t)(tv.tv_sec) * UINT64_C(1000) + tv.tv_usec / 1000; + return (uint64_t)tv.tv_sec * 1000 + (uint64_t)(tv.tv_usec / 1000); #endif } diff --git a/src/xz/options.c b/src/xz/options.c index de05364b..0c1ee221 100644 --- a/src/xz/options.c +++ b/src/xz/options.c @@ -258,7 +258,7 @@ set_lzma(void *options, unsigned key, uint64_t value, const char *valuestr) if (valuestr[0] < '0' || valuestr[0] > '9') error_lzma_preset(valuestr); - uint32_t preset = valuestr[0] - '0'; + uint32_t preset = (uint32_t)(valuestr[0] - '0'); // Currently only "e" is supported as a modifier, // so keep this simple for now. diff --git a/src/xz/util.c b/src/xz/util.c index 35850f4c..39e8ec8b 100644 --- a/src/xz/util.c +++ b/src/xz/util.c @@ -79,7 +79,7 @@ str_to_uint64(const char *name, const char *value, uint64_t min, uint64_t max) result *= 10; // Another overflow check - const uint32_t add = *value - '0'; + const uint32_t add = (uint32_t)(*value - '0'); if (UINT64_MAX - add < result) goto error; @@ -243,7 +243,7 @@ my_snprintf(char **pos, size_t *left, const char *fmt, ...) *left = 0; } else { *pos += len; - *left -= len; + *left -= (size_t)(len); } return; -- cgit v1.2.3 From 5c4fb60e8df026e933afab0cfe0a8b55be20036c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 23 Jun 2019 23:22:45 +0300 Subject: tuklib_mbstr_width: Fix a warning from -Wsign-conversion. --- src/common/tuklib_mbstr_width.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/tuklib_mbstr_width.c b/src/common/tuklib_mbstr_width.c index 3c38990f..4bbe9647 100644 --- a/src/common/tuklib_mbstr_width.c +++ b/src/common/tuklib_mbstr_width.c @@ -50,7 +50,7 @@ tuklib_mbstr_width(const char *str, size_t *bytes) if (wc_width < 0) return (size_t)-1; - width += wc_width; + width += (size_t)wc_width; } // Require that the string ends in the initial shift state. -- cgit v1.2.3 From 65a42741e290fbcd85dfc5db8a62c4bce5f7712c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 00:57:23 +0300 Subject: Tests: Remove a duplicate branch from tests/tests.h. The duplication was introduced about eleven years ago and should have been cleaned up back then already. This was caught by -Wduplicated-branches. --- tests/tests.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/tests.h b/tests/tests.h index 8f3c745d..2fd42373 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -94,13 +94,8 @@ coder_loop(lzma_stream *strm, uint8_t *in, size_t in_size, if (ret != expected_ret) error = true; - if (expected_ret == LZMA_STREAM_END) { - if (strm->total_in != in_size || strm->total_out != out_size) - error = true; - } else { - if (strm->total_in != in_size || strm->total_out != out_size) - error = true; - } + if (strm->total_in != in_size || strm->total_out != out_size) + error = true; return error; } -- cgit v1.2.3 From c8cace3d6e965c0fb537591372bf71b9357dd76c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 20:45:49 +0300 Subject: xz: Fix an integer overflow with 32-bit off_t. Or any off_t which isn't very big (like signed 64 bit integer that most system have). A small off_t could overflow if the file being decompressed had long enough run of zero bytes, which would result in corrupt output. --- src/xz/file_io.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 2352b297..6db62e76 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -1273,8 +1273,15 @@ io_write(file_pair *pair, const io_buf *buf, size_t size) // if the file ends with sparse block, we must also return // if size == 0 to avoid doing the lseek(). if (size == IO_BUFFER_SIZE) { - if (is_sparse(buf)) { - pair->dest_pending_sparse += size; + // Even if the block was sparse, treat it as non-sparse + // if the pending sparse amount is large compared to + // the size of off_t. In practice this only matters + // on 32-bit systems where off_t isn't always 64 bits. + const off_t pending_max + = (off_t)(1) << (sizeof(off_t) * CHAR_BIT - 2); + if (is_sparse(buf) && pair->dest_pending_sparse + < pending_max) { + pair->dest_pending_sparse += (off_t)(size); return false; } } else if (size == 0) { -- cgit v1.2.3 From cb708e8fa3405ec13a0ebfebbbf2793f927deab1 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 20:53:55 +0300 Subject: Tests: Silence a warning from -Wsign-conversion. --- tests/create_compress_files.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/create_compress_files.c b/tests/create_compress_files.c index bd5b4ef4..88d60b73 100644 --- a/tests/create_compress_files.c +++ b/tests/create_compress_files.c @@ -94,10 +94,10 @@ write_random(FILE *file) for (size_t i = 0; i < 123456; ++i) { n = 101771 * n + 71777; - putc(n & 0xFF, file); - putc((n >> 8) & 0xFF, file); - putc((n >> 16) & 0xFF, file); - putc(n >> 24, file); + putc((uint8_t)(n), file); + putc((uint8_t)(n >> 8), file); + putc((uint8_t)(n >> 16), file); + putc((uint8_t)(n >> 24), file); } } -- cgit v1.2.3 From 0e3c4002f809311ecef239b05e556d9c462b5703 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 22:47:39 +0300 Subject: liblzma: Remove incorrect uses of lzma_attribute((__unused__)). Caught by clang -Wused-but-marked-unused. --- src/liblzma/common/alone_decoder.c | 3 +-- src/liblzma/common/alone_encoder.c | 3 +-- src/liblzma/lz/lz_decoder.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/liblzma/common/alone_decoder.c b/src/liblzma/common/alone_decoder.c index 77d0a9b1..239b230e 100644 --- a/src/liblzma/common/alone_decoder.c +++ b/src/liblzma/common/alone_decoder.c @@ -50,8 +50,7 @@ typedef struct { static lzma_ret -alone_decode(void *coder_ptr, - const lzma_allocator *allocator lzma_attribute((__unused__)), +alone_decode(void *coder_ptr, const lzma_allocator *allocator, const uint8_t *restrict in, size_t *restrict in_pos, size_t in_size, uint8_t *restrict out, size_t *restrict out_pos, size_t out_size, diff --git a/src/liblzma/common/alone_encoder.c b/src/liblzma/common/alone_encoder.c index 402bebce..c4560d58 100644 --- a/src/liblzma/common/alone_encoder.c +++ b/src/liblzma/common/alone_encoder.c @@ -31,8 +31,7 @@ typedef struct { static lzma_ret -alone_encode(void *coder_ptr, - const lzma_allocator *allocator lzma_attribute((__unused__)), +alone_encode(void *coder_ptr, const lzma_allocator *allocator, const uint8_t *restrict in, size_t *restrict in_pos, size_t in_size, uint8_t *restrict out, size_t *restrict out_pos, size_t out_size, diff --git a/src/liblzma/lz/lz_decoder.c b/src/liblzma/lz/lz_decoder.c index 6c9024e2..09b57438 100644 --- a/src/liblzma/lz/lz_decoder.c +++ b/src/liblzma/lz/lz_decoder.c @@ -131,8 +131,7 @@ decode_buffer(lzma_coder *coder, static lzma_ret -lz_decode(void *coder_ptr, - const lzma_allocator *allocator lzma_attribute((__unused__)), +lz_decode(void *coder_ptr, const lzma_allocator *allocator, const uint8_t *restrict in, size_t *restrict in_pos, size_t in_size, uint8_t *restrict out, size_t *restrict out_pos, size_t out_size, -- cgit v1.2.3 From 267afcd9955e668c1532b069230c21c348eb4f82 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 22:57:43 +0300 Subject: xz: Silence a warning from clang -Wsign-conversion in main.c. --- src/xz/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xz/main.c b/src/xz/main.c index d74caf37..ca8a4680 100644 --- a/src/xz/main.c +++ b/src/xz/main.c @@ -326,5 +326,5 @@ main(int argc, char **argv) if (es == E_WARNING && no_warn) es = E_SUCCESS; - tuklib_exit(es, E_ERROR, message_verbosity_get() != V_SILENT); + tuklib_exit((int)es, E_ERROR, message_verbosity_get() != V_SILENT); } -- cgit v1.2.3 From 44eb961f2a51d02420d017bc5ff470360663650c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 23:45:21 +0300 Subject: liblzma: Silence clang -Wmissing-variable-declarations. --- src/liblzma/check/crc32_table.c | 3 +++ src/liblzma/check/crc64_table.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/liblzma/check/crc32_table.c b/src/liblzma/check/crc32_table.c index 368874eb..b11762ae 100644 --- a/src/liblzma/check/crc32_table.c +++ b/src/liblzma/check/crc32_table.c @@ -12,6 +12,9 @@ #include "common.h" +// Having the declaration here silences clang -Wmissing-variable-declarations. +extern const uint32_t lzma_crc32_table[8][256]; + #ifdef WORDS_BIGENDIAN # include "crc32_table_be.h" #else diff --git a/src/liblzma/check/crc64_table.c b/src/liblzma/check/crc64_table.c index 1fbcd947..7560eb0a 100644 --- a/src/liblzma/check/crc64_table.c +++ b/src/liblzma/check/crc64_table.c @@ -12,6 +12,9 @@ #include "common.h" +// 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 -- cgit v1.2.3 From 25f74554723e8deabc66fed1abf0ec27a4ed19d5 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Jun 2019 23:52:17 +0300 Subject: liblzma: Add a comment. --- src/liblzma/common/stream_encoder_mt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/liblzma/common/stream_encoder_mt.c b/src/liblzma/common/stream_encoder_mt.c index 448d871c..01e40339 100644 --- a/src/liblzma/common/stream_encoder_mt.c +++ b/src/liblzma/common/stream_encoder_mt.c @@ -700,7 +700,7 @@ stream_encode_mt(void *coder_ptr, const lzma_allocator *allocator, ret = coder->thread_error; if (ret != LZMA_OK) { assert(ret != LZMA_STREAM_END); - break; + break; // Break out of mythread_sync. } // Try to read compressed data to out[]. -- cgit v1.2.3 From f18eee9d15a22c8449ef395a05f0eb637c4ad253 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 25 Jun 2019 00:08:13 +0300 Subject: Tests: Silence warnings from clang -Wassign-enum. Also changed 999 to 99 so it fits even if lzma_check happened to be 8 bits wide. --- tests/test_block_header.c | 3 ++- tests/test_stream_flags.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_block_header.c b/tests/test_block_header.c index 3d9b5d93..7cd38985 100644 --- a/tests/test_block_header.c +++ b/tests/test_block_header.c @@ -127,7 +127,8 @@ test1(void) known_options.filters = filters_one; expect(lzma_block_header_size(&known_options) == LZMA_OK); - known_options.check = 999; // Some invalid value, which gets ignored. + // Some invalid value, which gets ignored. + known_options.check = (lzma_check)(99); expect(lzma_block_header_size(&known_options) == LZMA_OK); known_options.compressed_size = 5; diff --git a/tests/test_stream_flags.c b/tests/test_stream_flags.c index 9611459e..b40d035b 100644 --- a/tests/test_stream_flags.c +++ b/tests/test_stream_flags.c @@ -83,7 +83,7 @@ test_footer(void) static void test_encode_invalid(void) { - known_flags.check = LZMA_CHECK_ID_MAX + 1; + known_flags.check = (lzma_check)(LZMA_CHECK_ID_MAX + 1); known_flags.backward_size = 1024; expect(lzma_stream_header_encode(&known_flags, buffer) -- cgit v1.2.3 From bfc245569f340a75bd71ad32a6beba786712683b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 25 Jun 2019 00:16:06 +0300 Subject: configure.ac: Fix a typo in a comment. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index c4f8a4cc..3275a66d 100644 --- a/configure.ac +++ b/configure.ac @@ -683,7 +683,7 @@ TUKLIB_PHYSMEM TUKLIB_CPUCORES TUKLIB_MBSTR -# If requsted, check for system-provided SHA-256. At least the following +# If requested, check for system-provided SHA-256. At least the following # implementations are supported: # # OS Headers Library Type Function -- cgit v1.2.3 From 0e491aa8cd72e0100cd15c1b9469cd57fae500b0 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 25 Jun 2019 23:15:21 +0300 Subject: liblzma: Fix a buggy comment. --- src/liblzma/lz/lz_encoder_mf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/liblzma/lz/lz_encoder_mf.c b/src/liblzma/lz/lz_encoder_mf.c index 78520779..d03657a7 100644 --- a/src/liblzma/lz/lz_encoder_mf.c +++ b/src/liblzma/lz/lz_encoder_mf.c @@ -113,7 +113,7 @@ normalize(lzma_mf *mf) // may be match finders that use larger resolution than one byte. const uint32_t subvalue = (MUST_NORMALIZE_POS - mf->cyclic_size); - // & (~(UINT32_C(1) << 10) - 1); + // & ~((UINT32_C(1) << 10) - 1); for (uint32_t i = 0; i < mf->hash_count; ++i) { // If the distance is greater than the dictionary size, -- cgit v1.2.3 From 710f5bd769a5d2bd8684256c2727d15350ee2ab8 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 12 Jul 2019 18:30:46 +0300 Subject: Add missing include to tuklib_mbstr_width.c. It didn't matter in XZ Utils because sysdefs.h includes string.h anyway. --- src/common/tuklib_mbstr_width.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/tuklib_mbstr_width.c b/src/common/tuklib_mbstr_width.c index 4bbe9647..2eab2341 100644 --- a/src/common/tuklib_mbstr_width.c +++ b/src/common/tuklib_mbstr_width.c @@ -11,6 +11,7 @@ /////////////////////////////////////////////////////////////////////////////// #include "tuklib_mbstr.h" +#include #if defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH) # include -- cgit v1.2.3 From aba140e2df3ff63ad124ae997de16d517b98ca50 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 12 Jul 2019 18:57:43 +0300 Subject: Fix comment typos in tuklib_mbstr* files. --- src/common/tuklib_mbstr.h | 2 +- src/common/tuklib_mbstr_fw.c | 2 +- src/common/tuklib_mbstr_width.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/tuklib_mbstr.h b/src/common/tuklib_mbstr.h index 9f358355..dde9305f 100644 --- a/src/common/tuklib_mbstr.h +++ b/src/common/tuklib_mbstr.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file tuklib_mstr.h +/// \file tuklib_mbstr.h /// \brief Utility functions for handling multibyte strings /// /// If not enough multibyte string support is available in the C library, diff --git a/src/common/tuklib_mbstr_fw.c b/src/common/tuklib_mbstr_fw.c index 978a3fe1..af80dc16 100644 --- a/src/common/tuklib_mbstr_fw.c +++ b/src/common/tuklib_mbstr_fw.c @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file tuklib_mstr_fw.c +/// \file tuklib_mbstr_fw.c /// \brief Get the field width for printf() e.g. to align table columns // // Author: Lasse Collin diff --git a/src/common/tuklib_mbstr_width.c b/src/common/tuklib_mbstr_width.c index 2eab2341..69d159e0 100644 --- a/src/common/tuklib_mbstr_width.c +++ b/src/common/tuklib_mbstr_width.c @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file tuklib_mstr_width.c +/// \file tuklib_mbstr_width.c /// \brief Calculate width of a multibyte string // // Author: Lasse Collin -- cgit v1.2.3 From c9a8071e6690a8db8a485c075920df254e7c70ea Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 24 Sep 2019 23:02:40 +0300 Subject: Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris. This adds a configure option --enable-path-for-scripts=PREFIX which defaults to empty except on Solaris it is /usr/xpg4/bin to make POSIX grep and others available. The Solaris case had been documented in INSTALL with a manual fix but it's better to do this automatically since it is needed on most Solaris systems anyway. Thanks to Daniel Richard G. --- INSTALL | 43 +++++++++++++++++++++++++++++++++++-------- configure.ac | 26 ++++++++++++++++++++++++++ src/scripts/xzdiff.in | 1 + src/scripts/xzgrep.in | 1 + src/scripts/xzless.in | 1 + src/scripts/xzmore.in | 1 + 6 files changed, 65 insertions(+), 8 deletions(-) diff --git a/INSTALL b/INSTALL index c59bec52..2321dabf 100644 --- a/INSTALL +++ b/INSTALL @@ -123,8 +123,11 @@ XZ Utils Installation as an argument to the configure script. test_scripts.sh in "make check" may fail if good enough tools are - missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). See sections - 4.5 and 3.2 for more information. + missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). Nowadays + /usr/xpg4/bin is added to the script PATH by default on Solaris + (see --enable-path-for-scripts=PREFIX in section 2), but old xz + releases needed extra steps. See sections 4.5 and 3.2 for more + information. 1.2.6. Tru64 @@ -443,6 +446,23 @@ XZ Utils Installation and should work on most systems. This has no effect on the resulting binaries. + --enable-path-for-scripts=PREFIX + If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in + the beginning of the scripts (xzgrep and others). + The default is empty except on Solaris the default is + /usr/xpg4/bin. + + This can be useful if the default PATH doesn't contain + modern POSIX tools (as can be the case on Solaris) or if + one wants to ensure that the correct xz binary is in the + PATH for the scripts. Note that the latter use can break + "make check" if the prefixed PATH causes a wrong xz binary + (other than the one that was just built) to be used. + + Older xz releases support a different method for setting + the PATH for the scripts. It is described in section 3.2 + and is supported in this xz version too. + 2.1. Static vs. dynamic linking of liblzma @@ -515,11 +535,17 @@ XZ Utils Installation 3.2. PATH + The method described below is supported by older xz releases. + It is supported by the current version too, but the newer + --enable-path-for-scripts=PREFIX described in section 2 may be + more convenient. + The scripts assume that the required tools (standard POSIX utilities, - mktemp, and xz) are in PATH; the scripts don't set the PATH themselves. - Some people like this while some think this is a bug. Those in the - latter group can easily patch the scripts before running the configure - script by taking advantage of a placeholder line in the scripts. + mktemp, and xz) are in PATH; the scripts don't set the PATH themselves + (except as described for --enable-path-for-scripts=PREFIX). Some + people like this while some think this is a bug. Those in the latter + group can easily patch the scripts before running the configure script + by taking advantage of a placeholder line in the scripts. For example, to make the scripts prefix /usr/bin:/bin to PATH: @@ -593,8 +619,9 @@ XZ Utils Installation some tools are missing from the current PATH or the tools lack support for some POSIX features. This can happen at least on Solaris where the tools in /bin may be ancient but good enough - tools are available in /usr/xpg4/bin or /usr/xpg6/bin. One fix - for this problem is described in section 3.2 of this file. + tools are available in /usr/xpg4/bin or /usr/xpg6/bin. For possible + fixes, see --enable-path-for-scripts=PREFIX in section 2 and the + older alternative method described in section 3.2 of this file. If tests other than test_scripts.sh fail, a likely reason is that libtool links the test programs against an installed version of diff --git a/configure.ac b/configure.ac index 3275a66d..63afd8c2 100644 --- a/configure.ac +++ b/configure.ac @@ -516,6 +516,32 @@ case $enable_sandbox in esac +########################### +# PATH prefix for scripts # +########################### + +# The scripts can add a prefix to the search PATH so that POSIX tools +# or the xz binary is always in the PATH. +AC_ARG_ENABLE([path-for-scripts], + [AS_HELP_STRING([--enable-path-for-scripts=PREFIX], + [If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in + the beginning of the scripts (xzgrep and others). + The default is empty except on Solaris the default is + /usr/xpg4/bin.])], + [], [ + case $host_os in + solaris*) enable_path_for_scripts=/usr/xpg4/bin ;; + *) enable_path_for_scripts= ;; + esac + ]) +if test -n "$enable_path_for_scripts" && test "x$enable_path_for_scripts" != xno ; then + enable_path_for_scripts="PATH=$enable_path_for_scripts:\$PATH" +else + enable_path_for_scripts= +fi +AC_SUBST([enable_path_for_scripts]) + + ############################################################################### # Checks for programs. ############################################################################### diff --git a/src/scripts/xzdiff.in b/src/scripts/xzdiff.in index 6aa6b989..eb7825c1 100644 --- a/src/scripts/xzdiff.in +++ b/src/scripts/xzdiff.in @@ -15,6 +15,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. +@enable_path_for_scripts@ #SET_PATH - This line is a placeholder to ease patching this script. # Instead of unsetting XZ_OPT, just make sure that xz will use file format diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in index a570a905..9db5c3a8 100644 --- a/src/scripts/xzgrep.in +++ b/src/scripts/xzgrep.in @@ -18,6 +18,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. +@enable_path_for_scripts@ #SET_PATH - This line is a placeholder to ease patching this script. # Instead of unsetting XZ_OPT, just make sure that xz will use file format diff --git a/src/scripts/xzless.in b/src/scripts/xzless.in index 1b85ad6f..cf61ab29 100644 --- a/src/scripts/xzless.in +++ b/src/scripts/xzless.in @@ -15,6 +15,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. +@enable_path_for_scripts@ #SET_PATH - This line is a placeholder to ease patching this script. # Instead of unsetting XZ_OPT, just make sure that xz will use file format diff --git a/src/scripts/xzmore.in b/src/scripts/xzmore.in index 940d6614..ea832a30 100644 --- a/src/scripts/xzmore.in +++ b/src/scripts/xzmore.in @@ -15,6 +15,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. +@enable_path_for_scripts@ #SET_PATH - This line is a placeholder to ease patching this script. # Instead of unsetting XZ_OPT, just make sure that xz will use file format -- cgit v1.2.3 From a45badf0342666462cc6a7107a071418570ab773 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 29 Dec 2019 22:51:58 +0200 Subject: Tests: Hopefully fix test_check.c to work on EBCDIC systems. Thanks to Daniel Richard G. --- tests/test_check.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/test_check.c b/tests/test_check.c index 7d4a3607..58813a58 100644 --- a/tests/test_check.c +++ b/tests/test_check.c @@ -15,8 +15,13 @@ #include "tests.h" -static const uint8_t test_string[9] = "123456789"; -static const uint8_t test_unaligned[12] = "xxx123456789"; +// These must be specified as numbers so that the test works on EBCDIC +// systems too. +// static const uint8_t test_string[9] = "123456789"; +// static const uint8_t test_unaligned[12] = "xxx123456789"; +static const uint8_t test_string[9] = { 49, 50, 51, 52, 53, 54, 55, 56, 57 }; +static const uint8_t test_unaligned[12] + = { 120, 120, 120, 49, 50, 51, 52, 53, 54, 55, 56, 57 }; static bool -- cgit v1.2.3 From 850620468b57d49f16093e5870d1050886fcb37a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 31 Dec 2019 00:18:24 +0200 Subject: Revise tuklib_integer.h and .m4. Add a configure option --enable-unsafe-type-punning to get the old non-conforming memory access methods. It can be useful with old compilers or in some other less typical situations but shouldn't normally be used. Omit the packed struct trick for unaligned access. While it's best in some cases, this is simpler. If the memcpy trick doesn't work, one can request unsafe type punning from configure. Because CRC32/CRC64 code needs fast aligned reads, if no very safe way to do it is found, type punning is used as a fallback. This sucks but since it currently works in practice, it seems to be the least bad option. It's never needed with GCC >= 4.7 or Clang >= 3.6 since these support __builtin_assume_aligned and thus fast aligned access can be done with the memcpy trick. Other things: - Support GCC/Clang __builtin_bswapXX - Cleaner bswap fallback macros - Minor cleanups --- m4/tuklib_integer.m4 | 43 ++++ src/common/tuklib_integer.h | 488 ++++++++++++++++++++++++-------------------- 2 files changed, 314 insertions(+), 217 deletions(-) diff --git a/m4/tuklib_integer.m4 b/m4/tuklib_integer.m4 index 2ab72a2f..ae3c1f2a 100644 --- a/m4/tuklib_integer.m4 +++ b/m4/tuklib_integer.m4 @@ -45,6 +45,20 @@ main(void) ])dnl fi +AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], + [[__builtin_bswap16(1); + __builtin_bswap32(1); + __builtin_bswap64(1);]])], + [ + AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1], + [Define to 1 if the GNU C extensions + __builtin_bswap16/32/64 are supported.]) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + 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 @@ -71,4 +85,33 @@ if test "x$enable_unaligned_access" = xyes ; then else AC_MSG_RESULT([no]) fi + +AC_MSG_CHECKING([if unsafe type punning should be used]) +AC_ARG_ENABLE([unsafe-type-punning], + AS_HELP_STRING([--enable-unsafe-type-punning], + [This introduces strict aliasing violations and may result + in broken code. However, this might improve performance in + some cases, especially with old compilers (e.g. + GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7).]), + [], [enable_unsafe_type_punning=no]) +if test "x$enable_unsafe_type_punning" = xyes ; then + AC_DEFINE([TUKLIB_USE_UNSAFE_TYPE_PUNNING], [1], [Define to 1 to use + unsafe type punning, e.g. char *x = ...; *(int *)x = 123; + which violates strict aliasing rules and thus is + undefined behavior and might result in broken code.]) + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +AC_MSG_CHECKING([if __builtin_assume_aligned is supported]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_assume_aligned("", 1);]])], + [ + AC_DEFINE([HAVE___BUILTIN_ASSUME_ALIGNED], [1], + [Define to 1 if the GNU C extension + __builtin_assume_aligned is supported.]) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) ])dnl diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index 52564481..699d5fe6 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -6,22 +6,26 @@ /// This file provides macros or functions to do some basic integer and bit /// operations. /// -/// Endianness related integer operations (XX = 16, 32, or 64; Y = b or l): +/// Native endian inline functions (XX = 16, 32, or 64): +/// - Unaligned native endian reads: unaligned_readXXne(ptr) +/// - Unaligned native endian writes: unaligned_writeXXne(ptr, num) +/// - Aligned native endian reads: readXXne(ptr) +/// - Aligned native endian writes: writeXXne(ptr, num) +/// +/// Endianness-converting integer operations (these can be macros!) +/// (XX = 16, 32, or 64; Y = b or l): /// - Byte swapping: bswapXX(num) -/// - Byte order conversions to/from native: convXXYe(num) +/// - Byte order conversions to/from native (byteswaps if Y isn't +/// the native endianness): convXXYe(num) /// - Aligned reads: readXXYe(ptr) /// - Aligned writes: writeXXYe(ptr, num) /// - Unaligned reads (16/32-bit only): unaligned_readXXYe(ptr) /// - Unaligned writes (16/32-bit only): unaligned_writeXXYe(ptr, num) /// -/// Since they can macros, the arguments should have no side effects since -/// they may be evaluated more than once. -/// -/// \todo PowerPC and possibly some other architectures support -/// byte swapping load and store instructions. This file -/// doesn't take advantage of those instructions. +/// Since the above can macros, the arguments should have no side effects +/// because they may be evaluated more than once. /// -/// Bit scan operations for non-zero 32-bit integers: +/// Bit scan operations for non-zero 32-bit integers (inline functions): /// - Bit scan reverse (find highest non-zero bit): bsr32(num) /// - Count leading zeros: clz32(num) /// - Count trailing zeros: ctz32(num) @@ -44,12 +48,24 @@ #include "tuklib_common.h" #include +// Newer Intel C compilers require immintrin.h for _bit_scan_reverse() +// and such functions. +#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) +# include +#endif + -//////////////////////////////////////// -// Operating system specific features // -//////////////////////////////////////// +/////////////////// +// Byte swapping // +/////////////////// + +#if defined(HAVE___BUILTIN_BSWAPXX) + // GCC >= 4.8 and Clang +# define bswap16(n) __builtin_bswap16(n) +# define bswap32(n) __builtin_bswap32(n) +# define bswap64(n) __builtin_bswap64(n) -#if defined(HAVE_BYTESWAP_H) +#elif defined(HAVE_BYTESWAP_H) // glibc, uClibc, dietlibc # include # ifdef HAVE_BSWAP_16 @@ -98,45 +114,33 @@ # endif #endif - -//////////////////////////////// -// Compiler-specific features // -//////////////////////////////// - -// Newer Intel C compilers require immintrin.h for _bit_scan_reverse() -// and such functions. -#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) -# include -#endif - - -/////////////////// -// Byte swapping // -/////////////////// - #ifndef bswap16 -# define bswap16(num) \ - (((uint16_t)(num) << 8) | ((uint16_t)(num) >> 8)) +# define bswap16(n) (uint16_t)( \ + (((n) & 0x00FFU) << 8) \ + | (((n) & 0xFF00U) >> 8) \ + ) #endif #ifndef bswap32 -# define bswap32(num) \ - ( (((uint32_t)(num) << 24) ) \ - | (((uint32_t)(num) << 8) & UINT32_C(0x00FF0000)) \ - | (((uint32_t)(num) >> 8) & UINT32_C(0x0000FF00)) \ - | (((uint32_t)(num) >> 24) ) ) +# define bswap32(n) (uint32_t)( \ + (((n) & UINT32_C(0x000000FF)) << 24) \ + | (((n) & UINT32_C(0x0000FF00)) << 8) \ + | (((n) & UINT32_C(0x00FF0000)) >> 8) \ + | (((n) & UINT32_C(0xFF000000)) >> 24) \ + ) #endif #ifndef bswap64 -# define bswap64(num) \ - ( (((uint64_t)(num) << 56) ) \ - | (((uint64_t)(num) << 40) & UINT64_C(0x00FF000000000000)) \ - | (((uint64_t)(num) << 24) & UINT64_C(0x0000FF0000000000)) \ - | (((uint64_t)(num) << 8) & UINT64_C(0x000000FF00000000)) \ - | (((uint64_t)(num) >> 8) & UINT64_C(0x00000000FF000000)) \ - | (((uint64_t)(num) >> 24) & UINT64_C(0x0000000000FF0000)) \ - | (((uint64_t)(num) >> 40) & UINT64_C(0x000000000000FF00)) \ - | (((uint64_t)(num) >> 56) ) ) +# define bswap64(n) (uint64_t)( \ + (((n) & UINT64_C(0x00000000000000FF)) << 56) \ + | (((n) & UINT64_C(0x000000000000FF00)) << 40) \ + | (((n) & UINT64_C(0x0000000000FF0000)) << 24) \ + | (((n) & UINT64_C(0x00000000FF000000)) << 8) \ + | (((n) & UINT64_C(0x000000FF00000000)) >> 8) \ + | (((n) & UINT64_C(0x0000FF0000000000)) >> 24) \ + | (((n) & UINT64_C(0x00FF000000000000)) >> 40) \ + | (((n) & UINT64_C(0xFF00000000000000)) >> 56) \ + ) #endif // Define conversion macros using the basic byte swapping macros. @@ -181,148 +185,31 @@ #endif -////////////////////////////// -// Aligned reads and writes // -////////////////////////////// - -static inline uint16_t -read16be(const uint8_t *buf) -{ - uint16_t num = *(const uint16_t *)buf; - return conv16be(num); -} - - -static inline uint16_t -read16le(const uint8_t *buf) -{ - uint16_t num = *(const uint16_t *)buf; - return conv16le(num); -} - - -static inline uint32_t -read32be(const uint8_t *buf) -{ - uint32_t num = *(const uint32_t *)buf; - return conv32be(num); -} - - -static inline uint32_t -read32le(const uint8_t *buf) -{ - uint32_t num = *(const uint32_t *)buf; - return conv32le(num); -} - - -static inline uint64_t -read64be(const uint8_t *buf) -{ - uint64_t num = *(const uint64_t *)buf; - return conv64be(num); -} - - -static inline uint64_t -read64le(const uint8_t *buf) -{ - uint64_t num = *(const uint64_t *)buf; - return conv64le(num); -} - - -// NOTE: Possible byte swapping must be done in a macro to allow GCC -// 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 -// to make type checking of the buf pointer possible similarly to readXXYe() -// functions. - -#define write16be(buf, num) write16ne((buf), conv16be(num)) -#define write16le(buf, num) write16ne((buf), conv16le(num)) -#define write32be(buf, num) write32ne((buf), conv32be(num)) -#define write32le(buf, num) write32ne((buf), conv32le(num)) -#define write64be(buf, num) write64ne((buf), conv64be(num)) -#define write64le(buf, num) write64ne((buf), conv64le(num)) - - -static inline void -write16ne(uint8_t *buf, uint16_t num) -{ - *(uint16_t *)buf = num; - return; -} - - -static inline void -write32ne(uint8_t *buf, uint32_t num) -{ - *(uint32_t *)buf = num; - return; -} - - -static inline void -write64ne(uint8_t *buf, uint64_t num) -{ - *(uint64_t *)buf = num; - return; -} - - //////////////////////////////// // Unaligned reads and writes // //////////////////////////////// // The traditional way of casting e.g. *(const uint16_t *)uint8_pointer -// is bad (at least) because compilers can emit vector instructions that -// require aligned pointers even if non-vector instructions work with -// unaligned pointers. +// is bad even if the uint8_pointer is properly aligned because this kind +// of casts break strict aliasing rules and result in undefined behavior. +// With unaligned pointers it's even worse: compilers may emit vector +// instructions that require aligned pointers even if non-vector +// instructions work with unaligned pointers. // // Using memcpy() is the standard compliant way to do unaligned access. // Many modern compilers inline it so there is no function call overhead. -// -// However, it seems that some compilers generate better code with a cast -// to a packed struct than with memcpy(): -// - Old GCC versions (early 4.x and older) on x86 -// - GCC <= 8.2 (and possibly newer) on ARMv5 (but ARMv5 is old and maybe -// doesn't matter so much) -// - GCC <= 5.x on ARMv7 (on 4.x neither is great but packed is less bad) -// - Intel C Compiler <= 19 (and possibly newer) -// -// GCC on ARMv6 is weird: -// - GCC >= 6.x is better with memcpy() than with a packed struct. -// - On GCC < 6 neither method is good, but packed seems less bad. -// -// https://gcc.godbolt.org/ was useful for seeing what kind of code is -// generated by different compilers on different archs. Note that one -// may need to try a little less trivial code than than these functions -// alone to spot differences. For example this is better with packed method -// on Intel C Compiler 19: -// -// int foo(const uint8_t *a, const uint8_t *b) -// { -// return unaligned_read16ne(a) == unaligned_read16ne(b); -// } -// -// Based on the above information, prefer the memcpy() method in -// general (including all Clang versions), but use the packed struct -// with GCC 5.x and older and with the Intel C Compiler. This isn't -// optimal but at least it covers some known special cases. -#if defined(__GNUC__) && !defined(__clang__) \ - && (__GNUC__ < 6 || defined(__INTEL_COMPILER)) -# define TUKLIB_UNALIGNED_WITH_PACKED 1 -#endif - +// For those compilers that don't handle the memcpy() method well, the +// old casting method (that violates strict aliasing) can be requested at +// build time. A third method, casting to a packed struct, would also be +// an option but isn't provided to keep things simpler (it's already a mess). +// Hopefully this is flexible enough in practice. static inline uint16_t unaligned_read16ne(const uint8_t *buf) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint16_t v; }; - const struct s *p = (const struct s *)buf; - return p->v; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + return *(const uint16_t *)buf; #else uint16_t num; memcpy(&num, buf, sizeof(num)); @@ -334,10 +221,9 @@ unaligned_read16ne(const uint8_t *buf) static inline uint32_t unaligned_read32ne(const uint8_t *buf) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint32_t v; }; - const struct s *p = (const struct s *)buf; - return p->v; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + return *(const uint32_t *)buf; #else uint32_t num; memcpy(&num, buf, sizeof(num)); @@ -349,10 +235,9 @@ unaligned_read32ne(const uint8_t *buf) static inline uint64_t unaligned_read64ne(const uint8_t *buf) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint64_t v; }; - const struct s *p = (const struct s *)buf; - return p->v; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + return *(const uint64_t *)buf; #else uint64_t num; memcpy(&num, buf, sizeof(num)); @@ -364,10 +249,9 @@ unaligned_read64ne(const uint8_t *buf) static inline void unaligned_write16ne(uint8_t *buf, uint16_t num) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint16_t v; }; - struct s *p = (struct s *)buf; - p->v = num; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + *(uint16_t *)buf = num; #else memcpy(buf, &num, sizeof(num)); #endif @@ -378,10 +262,9 @@ unaligned_write16ne(uint8_t *buf, uint16_t num) static inline void unaligned_write32ne(uint8_t *buf, uint32_t num) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint32_t v; }; - struct s *p = (struct s *)buf; - p->v = num; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + *(uint32_t *)buf = num; #else memcpy(buf, &num, sizeof(num)); #endif @@ -392,10 +275,9 @@ unaligned_write32ne(uint8_t *buf, uint32_t num) static inline void unaligned_write64ne(uint8_t *buf, uint64_t num) { -#ifdef TUKLIB_UNALIGNED_WITH_PACKED - struct __attribute__((__packed__)) s { uint64_t v; }; - struct s *p = (struct s *)buf; - p->v = num; +#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ + && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) + *(uint64_t *)buf = num; #else memcpy(buf, &num, sizeof(num)); #endif @@ -403,12 +285,6 @@ unaligned_write64ne(uint8_t *buf, uint64_t num) } -// NOTE: TUKLIB_FAST_UNALIGNED_ACCESS indicates only support for 16-bit and -// 32-bit unaligned integer loads and stores. It's possible that 64-bit -// unaligned access doesn't work or is slower than byte-by-byte access. -// Since unaligned 64-bit is probably not needed as often as 16-bit or -// 32-bit, we simply don't support 64-bit unaligned access for now. - static inline uint16_t unaligned_read16be(const uint8_t *buf) { @@ -467,8 +343,11 @@ unaligned_read32le(const uint8_t *buf) } +// 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 +// to make type checking of the buf pointer possible. #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) -// Like in the aligned case, these need to be macros. # define unaligned_write16be(buf, num) \ unaligned_write16ne(buf, conv16be(num)) # define unaligned_write32be(buf, num) \ @@ -531,6 +410,181 @@ unaligned_write32le(uint8_t *buf, uint32_t num) #endif +////////////////////////////// +// Aligned reads and writes // +////////////////////////////// + +// Separate functions for aligned reads and writes are provided since on +// strict-align archs aligned access is much faster than unaligned access. +// +// Just like in the unaligned case, memcpy() is needed to avoid +// strict aliasing violations. However, on archs that don't support +// unaligned access the compiler cannot know that the pointers given +// to memcpy() are aligned which results in slow code. As of C11 there is +// no standard way to tell the compiler that we know that the address is +// aligned but some compilers have language extensions to do that. With +// such language extensions the memcpy() method gives excellent results. +// +// What to do on a strict-align system when no known language extentensions +// are available? Falling back to byte-by-byte access would be safe but ruin +// optimizations that have been made specifically with aligned access in mind. +// As a compromise, aligned reads will fall back to non-compliant type punning +// but aligned writes will be byte-by-byte, that is, fast reads are preferred +// over fast writes. This obviously isn't great but hopefully it's a working +// compromise for now. +// +// __builtin_assume_aligned is support by GCC >= 4.7 and clang >= 3.6. +#ifdef HAVE___BUILTIN_ASSUME_ALIGNED +# define tuklib_memcpy_aligned(dest, src, size) \ + memcpy(dest, __builtin_assume_aligned(src, size), size) +#else +# define tuklib_memcpy_aligned(dest, src, size) \ + memcpy(dest, src, size) +# ifndef TUKLIB_FAST_UNALIGNED_ACCESS +# define TUKLIB_USE_UNSAFE_ALIGNED_READS 1 +# endif +#endif + + +static inline uint16_t +read16ne(const uint8_t *buf) +{ +#if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ + || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) + return *(const uint16_t *)buf; +#else + uint16_t num; + tuklib_memcpy_aligned(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline uint32_t +read32ne(const uint8_t *buf) +{ +#if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ + || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) + return *(const uint32_t *)buf; +#else + uint32_t num; + tuklib_memcpy_aligned(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline uint64_t +read64ne(const uint8_t *buf) +{ +#if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ + || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) + return *(const uint64_t *)buf; +#else + uint64_t num; + tuklib_memcpy_aligned(&num, buf, sizeof(num)); + return num; +#endif +} + + +static inline void +write16ne(uint8_t *buf, uint16_t num) +{ +#ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING + *(uint16_t *)buf = num; +#else + tuklib_memcpy_aligned(buf, &num, sizeof(num)); +#endif + return; +} + + +static inline void +write32ne(uint8_t *buf, uint32_t num) +{ +#ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING + *(uint32_t *)buf = num; +#else + tuklib_memcpy_aligned(buf, &num, sizeof(num)); +#endif + return; +} + + +static inline void +write64ne(uint8_t *buf, uint64_t num) +{ +#ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING + *(uint64_t *)buf = num; +#else + tuklib_memcpy_aligned(buf, &num, sizeof(num)); +#endif + return; +} + + +static inline uint16_t +read16be(const uint8_t *buf) +{ + uint16_t num = read16ne(buf); + return conv16be(num); +} + + +static inline uint16_t +read16le(const uint8_t *buf) +{ + uint16_t num = read16ne(buf); + return conv16le(num); +} + + +static inline uint32_t +read32be(const uint8_t *buf) +{ + uint32_t num = read32ne(buf); + return conv32be(num); +} + + +static inline uint32_t +read32le(const uint8_t *buf) +{ + uint32_t num = read32ne(buf); + return conv32le(num); +} + + +static inline uint64_t +read64be(const uint8_t *buf) +{ + uint64_t num = read64ne(buf); + return conv64be(num); +} + + +static inline uint64_t +read64le(const uint8_t *buf) +{ + uint64_t num = read64ne(buf); + return conv64le(num); +} + + +// These need to be macros like in the unaligned case. +#define write16be(buf, num) write16ne((buf), conv16be(num)) +#define write16le(buf, num) write16ne((buf), conv16le(num)) +#define write32be(buf, num) write32ne((buf), conv32be(num)) +#define write32le(buf, num) write32ne((buf), conv32le(num)) +#define write64be(buf, num) write64ne((buf), conv64be(num)) +#define write64le(buf, num) write64ne((buf), conv64le(num)) + + +//////////////////// +// Bit operations // +//////////////////// + static inline uint32_t bsr32(uint32_t n) { @@ -558,27 +612,27 @@ bsr32(uint32_t n) #else uint32_t i = 31; - if ((n & UINT32_C(0xFFFF0000)) == 0) { + if ((n & 0xFFFF0000) == 0) { n <<= 16; i = 15; } - if ((n & UINT32_C(0xFF000000)) == 0) { + if ((n & 0xFF000000) == 0) { n <<= 8; i -= 8; } - if ((n & UINT32_C(0xF0000000)) == 0) { + if ((n & 0xF0000000) == 0) { n <<= 4; i -= 4; } - if ((n & UINT32_C(0xC0000000)) == 0) { + if ((n & 0xC0000000) == 0) { n <<= 2; i -= 2; } - if ((n & UINT32_C(0x80000000)) == 0) + if ((n & 0x80000000) == 0) --i; return i; @@ -610,27 +664,27 @@ clz32(uint32_t n) #else uint32_t i = 0; - if ((n & UINT32_C(0xFFFF0000)) == 0) { + if ((n & 0xFFFF0000) == 0) { n <<= 16; i = 16; } - if ((n & UINT32_C(0xFF000000)) == 0) { + if ((n & 0xFF000000) == 0) { n <<= 8; i += 8; } - if ((n & UINT32_C(0xF0000000)) == 0) { + if ((n & 0xF0000000) == 0) { n <<= 4; i += 4; } - if ((n & UINT32_C(0xC0000000)) == 0) { + if ((n & 0xC0000000) == 0) { n <<= 2; i += 2; } - if ((n & UINT32_C(0x80000000)) == 0) + if ((n & 0x80000000) == 0) ++i; return i; @@ -660,27 +714,27 @@ ctz32(uint32_t n) #else uint32_t i = 0; - if ((n & UINT32_C(0x0000FFFF)) == 0) { + if ((n & 0x0000FFFF) == 0) { n >>= 16; i = 16; } - if ((n & UINT32_C(0x000000FF)) == 0) { + if ((n & 0x000000FF) == 0) { n >>= 8; i += 8; } - if ((n & UINT32_C(0x0000000F)) == 0) { + if ((n & 0x0000000F) == 0) { n >>= 4; i += 4; } - if ((n & UINT32_C(0x00000003)) == 0) { + if ((n & 0x00000003) == 0) { n >>= 2; i += 2; } - if ((n & UINT32_C(0x00000001)) == 0) + if ((n & 0x00000001) == 0) ++i; return i; -- cgit v1.2.3 From 52d89d8443c4a31a69c0701062f2c7711d82bbed Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 31 Dec 2019 00:29:48 +0200 Subject: Rename read32ne to aligned_read32ne, and similarly for the others. Using the aligned methods requires more care to ensure that the address really is aligned, so it's nicer if the aligned methods are prefixed. The next commit will remove the unaligned_ prefix from the unaligned methods which in liblzma are used in more places than the aligned ones. --- src/common/tuklib_integer.h | 56 +++++++++++++++++++++--------------------- src/liblzma/check/crc32_fast.c | 4 +-- src/liblzma/check/crc64_fast.c | 4 +-- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index 699d5fe6..e0f5dbee 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -9,16 +9,16 @@ /// Native endian inline functions (XX = 16, 32, or 64): /// - Unaligned native endian reads: unaligned_readXXne(ptr) /// - Unaligned native endian writes: unaligned_writeXXne(ptr, num) -/// - Aligned native endian reads: readXXne(ptr) -/// - Aligned native endian writes: writeXXne(ptr, num) +/// - Aligned native endian reads: aligned_readXXne(ptr) +/// - Aligned native endian writes: aligned_writeXXne(ptr, num) /// /// Endianness-converting integer operations (these can be macros!) /// (XX = 16, 32, or 64; Y = b or l): /// - Byte swapping: bswapXX(num) /// - Byte order conversions to/from native (byteswaps if Y isn't /// the native endianness): convXXYe(num) -/// - Aligned reads: readXXYe(ptr) -/// - Aligned writes: writeXXYe(ptr, num) +/// - Aligned reads: aligned_readXXYe(ptr) +/// - Aligned writes: aligned_writeXXYe(ptr, num) /// - Unaligned reads (16/32-bit only): unaligned_readXXYe(ptr) /// - Unaligned writes (16/32-bit only): unaligned_writeXXYe(ptr, num) /// @@ -447,7 +447,7 @@ unaligned_write32le(uint8_t *buf, uint32_t num) static inline uint16_t -read16ne(const uint8_t *buf) +aligned_read16ne(const uint8_t *buf) { #if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) @@ -461,7 +461,7 @@ read16ne(const uint8_t *buf) static inline uint32_t -read32ne(const uint8_t *buf) +aligned_read32ne(const uint8_t *buf) { #if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) @@ -475,7 +475,7 @@ read32ne(const uint8_t *buf) static inline uint64_t -read64ne(const uint8_t *buf) +aligned_read64ne(const uint8_t *buf) { #if defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) \ || defined(TUKLIB_USE_UNSAFE_ALIGNED_READS) @@ -489,7 +489,7 @@ read64ne(const uint8_t *buf) static inline void -write16ne(uint8_t *buf, uint16_t num) +aligned_write16ne(uint8_t *buf, uint16_t num) { #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint16_t *)buf = num; @@ -501,7 +501,7 @@ write16ne(uint8_t *buf, uint16_t num) static inline void -write32ne(uint8_t *buf, uint32_t num) +aligned_write32ne(uint8_t *buf, uint32_t num) { #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint32_t *)buf = num; @@ -513,7 +513,7 @@ write32ne(uint8_t *buf, uint32_t num) static inline void -write64ne(uint8_t *buf, uint64_t num) +aligned_write64ne(uint8_t *buf, uint64_t num) { #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint64_t *)buf = num; @@ -525,60 +525,60 @@ write64ne(uint8_t *buf, uint64_t num) static inline uint16_t -read16be(const uint8_t *buf) +aligned_read16be(const uint8_t *buf) { - uint16_t num = read16ne(buf); + uint16_t num = aligned_read16ne(buf); return conv16be(num); } static inline uint16_t -read16le(const uint8_t *buf) +aligned_read16le(const uint8_t *buf) { - uint16_t num = read16ne(buf); + uint16_t num = aligned_read16ne(buf); return conv16le(num); } static inline uint32_t -read32be(const uint8_t *buf) +aligned_read32be(const uint8_t *buf) { - uint32_t num = read32ne(buf); + uint32_t num = aligned_read32ne(buf); return conv32be(num); } static inline uint32_t -read32le(const uint8_t *buf) +aligned_read32le(const uint8_t *buf) { - uint32_t num = read32ne(buf); + uint32_t num = aligned_read32ne(buf); return conv32le(num); } static inline uint64_t -read64be(const uint8_t *buf) +aligned_read64be(const uint8_t *buf) { - uint64_t num = read64ne(buf); + uint64_t num = aligned_read64ne(buf); return conv64be(num); } static inline uint64_t -read64le(const uint8_t *buf) +aligned_read64le(const uint8_t *buf) { - uint64_t num = read64ne(buf); + uint64_t num = aligned_read64ne(buf); return conv64le(num); } // These need to be macros like in the unaligned case. -#define write16be(buf, num) write16ne((buf), conv16be(num)) -#define write16le(buf, num) write16ne((buf), conv16le(num)) -#define write32be(buf, num) write32ne((buf), conv32be(num)) -#define write32le(buf, num) write32ne((buf), conv32le(num)) -#define write64be(buf, num) write64ne((buf), conv64be(num)) -#define write64le(buf, num) write64ne((buf), conv64le(num)) +#define aligned_write16be(buf, num) aligned_write16ne((buf), conv16be(num)) +#define aligned_write16le(buf, num) aligned_write16ne((buf), conv16le(num)) +#define aligned_write32be(buf, num) aligned_write32ne((buf), conv32be(num)) +#define aligned_write32le(buf, num) aligned_write32ne((buf), conv32le(num)) +#define aligned_write64be(buf, num) aligned_write64ne((buf), conv64be(num)) +#define aligned_write64le(buf, num) aligned_write64ne((buf), conv64le(num)) //////////////////// diff --git a/src/liblzma/check/crc32_fast.c b/src/liblzma/check/crc32_fast.c index 3de02638..eed73505 100644 --- a/src/liblzma/check/crc32_fast.c +++ b/src/liblzma/check/crc32_fast.c @@ -49,7 +49,7 @@ lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) // Calculate the CRC32 using the slice-by-eight algorithm. while (buf < limit) { - crc ^= *(const uint32_t *)(buf); + crc ^= aligned_read32ne(buf); buf += 4; crc = lzma_crc32_table[7][A(crc)] @@ -57,7 +57,7 @@ lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) ^ lzma_crc32_table[5][C(crc)] ^ lzma_crc32_table[4][D(crc)]; - const uint32_t tmp = *(const uint32_t *)(buf); + const uint32_t tmp = aligned_read32ne(buf); buf += 4; // At least with some compilers, it is critical for diff --git a/src/liblzma/check/crc64_fast.c b/src/liblzma/check/crc64_fast.c index 52af29ed..8af54cda 100644 --- a/src/liblzma/check/crc64_fast.c +++ b/src/liblzma/check/crc64_fast.c @@ -47,9 +47,9 @@ lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc) while (buf < limit) { #ifdef WORDS_BIGENDIAN const uint32_t tmp = (crc >> 32) - ^ *(const uint32_t *)(buf); + ^ aligned_read32ne(buf); #else - const uint32_t tmp = crc ^ *(const uint32_t *)(buf); + const uint32_t tmp = crc ^ aligned_read32ne(buf); #endif buf += 4; -- cgit v1.2.3 From 00517d125cc26ecece0eebb84c1c3975cd19bee0 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 31 Dec 2019 22:41:45 +0200 Subject: Rename unaligned_read32ne to read32ne, and similarly for the others. --- src/common/tuklib_integer.h | 64 +++++++++++++++---------------- src/liblzma/common/alone_encoder.c | 2 +- src/liblzma/common/block_header_decoder.c | 2 +- src/liblzma/common/block_header_encoder.c | 2 +- src/liblzma/common/memcmplen.h | 9 ++--- src/liblzma/common/stream_flags_decoder.c | 6 +-- src/liblzma/common/stream_flags_encoder.c | 8 ++-- src/liblzma/lz/lz_encoder_hash.h | 2 +- src/liblzma/lzma/lzma_decoder.c | 2 +- src/liblzma/lzma/lzma_encoder.c | 2 +- src/liblzma/lzma/lzma_encoder_private.h | 3 +- src/liblzma/simple/simple_decoder.c | 2 +- src/liblzma/simple/simple_encoder.c | 2 +- tests/test_block_header.c | 4 +- tests/test_stream_flags.c | 6 +-- 15 files changed, 54 insertions(+), 62 deletions(-) diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h index e0f5dbee..6f44a7a0 100644 --- a/src/common/tuklib_integer.h +++ b/src/common/tuklib_integer.h @@ -7,8 +7,8 @@ /// operations. /// /// Native endian inline functions (XX = 16, 32, or 64): -/// - Unaligned native endian reads: unaligned_readXXne(ptr) -/// - Unaligned native endian writes: unaligned_writeXXne(ptr, num) +/// - Unaligned native endian reads: readXXne(ptr) +/// - Unaligned native endian writes: writeXXne(ptr, num) /// - Aligned native endian reads: aligned_readXXne(ptr) /// - Aligned native endian writes: aligned_writeXXne(ptr, num) /// @@ -17,10 +17,10 @@ /// - 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) /// - Aligned reads: aligned_readXXYe(ptr) /// - Aligned writes: aligned_writeXXYe(ptr, num) -/// - Unaligned reads (16/32-bit only): unaligned_readXXYe(ptr) -/// - Unaligned writes (16/32-bit only): unaligned_writeXXYe(ptr, num) /// /// Since the above can macros, the arguments should have no side effects /// because they may be evaluated more than once. @@ -205,7 +205,7 @@ // Hopefully this is flexible enough in practice. static inline uint16_t -unaligned_read16ne(const uint8_t *buf) +read16ne(const uint8_t *buf) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -219,7 +219,7 @@ unaligned_read16ne(const uint8_t *buf) static inline uint32_t -unaligned_read32ne(const uint8_t *buf) +read32ne(const uint8_t *buf) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -233,7 +233,7 @@ unaligned_read32ne(const uint8_t *buf) static inline uint64_t -unaligned_read64ne(const uint8_t *buf) +read64ne(const uint8_t *buf) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -247,7 +247,7 @@ unaligned_read64ne(const uint8_t *buf) static inline void -unaligned_write16ne(uint8_t *buf, uint16_t num) +write16ne(uint8_t *buf, uint16_t num) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -260,7 +260,7 @@ unaligned_write16ne(uint8_t *buf, uint16_t num) static inline void -unaligned_write32ne(uint8_t *buf, uint32_t num) +write32ne(uint8_t *buf, uint32_t num) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -273,7 +273,7 @@ unaligned_write32ne(uint8_t *buf, uint32_t num) static inline void -unaligned_write64ne(uint8_t *buf, uint64_t num) +write64ne(uint8_t *buf, uint64_t num) { #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING) @@ -286,10 +286,10 @@ unaligned_write64ne(uint8_t *buf, uint64_t num) static inline uint16_t -unaligned_read16be(const uint8_t *buf) +read16be(const uint8_t *buf) { #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - uint16_t num = unaligned_read16ne(buf); + uint16_t num = read16ne(buf); return conv16be(num); #else uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1]; @@ -299,10 +299,10 @@ unaligned_read16be(const uint8_t *buf) static inline uint16_t -unaligned_read16le(const uint8_t *buf) +read16le(const uint8_t *buf) { #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - uint16_t num = unaligned_read16ne(buf); + uint16_t num = read16ne(buf); return conv16le(num); #else uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8); @@ -312,10 +312,10 @@ unaligned_read16le(const uint8_t *buf) static inline uint32_t -unaligned_read32be(const uint8_t *buf) +read32be(const uint8_t *buf) { #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - uint32_t num = unaligned_read32ne(buf); + uint32_t num = read32ne(buf); return conv32be(num); #else uint32_t num = (uint32_t)buf[0] << 24; @@ -328,10 +328,10 @@ unaligned_read32be(const uint8_t *buf) static inline uint32_t -unaligned_read32le(const uint8_t *buf) +read32le(const uint8_t *buf) { #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) - uint32_t num = unaligned_read32ne(buf); + uint32_t num = read32ne(buf); return conv32le(num); #else uint32_t num = (uint32_t)buf[0]; @@ -348,23 +348,19 @@ unaligned_read32le(const uint8_t *buf) // byte swapping macros. The actual write is done in an inline function // to make type checking of the buf pointer possible. #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) -# define unaligned_write16be(buf, num) \ - unaligned_write16ne(buf, conv16be(num)) -# define unaligned_write32be(buf, num) \ - unaligned_write32ne(buf, conv32be(num)) +# define write16be(buf, num) write16ne(buf, conv16be(num)) +# define write32be(buf, num) write32ne(buf, conv32be(num)) #endif #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) -# define unaligned_write16le(buf, num) \ - unaligned_write16ne(buf, conv16le(num)) -# define unaligned_write32le(buf, num) \ - unaligned_write32ne(buf, conv32le(num)) +# define write16le(buf, num) write16ne(buf, conv16le(num)) +# define write32le(buf, num) write32ne(buf, conv32le(num)) #endif -#ifndef unaligned_write16be +#ifndef write16be static inline void -unaligned_write16be(uint8_t *buf, uint16_t num) +write16be(uint8_t *buf, uint16_t num) { buf[0] = (uint8_t)(num >> 8); buf[1] = (uint8_t)num; @@ -373,9 +369,9 @@ unaligned_write16be(uint8_t *buf, uint16_t num) #endif -#ifndef unaligned_write16le +#ifndef write16le static inline void -unaligned_write16le(uint8_t *buf, uint16_t num) +write16le(uint8_t *buf, uint16_t num) { buf[0] = (uint8_t)num; buf[1] = (uint8_t)(num >> 8); @@ -384,9 +380,9 @@ unaligned_write16le(uint8_t *buf, uint16_t num) #endif -#ifndef unaligned_write32be +#ifndef write32be static inline void -unaligned_write32be(uint8_t *buf, uint32_t num) +write32be(uint8_t *buf, uint32_t num) { buf[0] = (uint8_t)(num >> 24); buf[1] = (uint8_t)(num >> 16); @@ -397,9 +393,9 @@ unaligned_write32be(uint8_t *buf, uint32_t num) #endif -#ifndef unaligned_write32le +#ifndef write32le static inline void -unaligned_write32le(uint8_t *buf, uint32_t num) +write32le(uint8_t *buf, uint32_t num) { buf[0] = (uint8_t)num; buf[1] = (uint8_t)(num >> 8); diff --git a/src/liblzma/common/alone_encoder.c b/src/liblzma/common/alone_encoder.c index c4560d58..96c1db70 100644 --- a/src/liblzma/common/alone_encoder.c +++ b/src/liblzma/common/alone_encoder.c @@ -121,7 +121,7 @@ alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator, if (d != UINT32_MAX) ++d; - unaligned_write32le(coder->header + 1, d); + write32le(coder->header + 1, d); // - Uncompressed size (always unknown and using EOPM) memset(coder->header + 1 + 4, 0xFF, 8); diff --git a/src/liblzma/common/block_header_decoder.c b/src/liblzma/common/block_header_decoder.c index 449edaa5..2e1135dd 100644 --- a/src/liblzma/common/block_header_decoder.c +++ b/src/liblzma/common/block_header_decoder.c @@ -67,7 +67,7 @@ lzma_block_header_decode(lzma_block *block, const size_t in_size = block->header_size - 4; // Verify CRC32 - if (lzma_crc32(in, in_size, 0) != unaligned_read32le(in + in_size)) + if (lzma_crc32(in, in_size, 0) != read32le(in + in_size)) return LZMA_DATA_ERROR; // Check for unsupported flags. diff --git a/src/liblzma/common/block_header_encoder.c b/src/liblzma/common/block_header_encoder.c index 5c5f5424..160425d2 100644 --- a/src/liblzma/common/block_header_encoder.c +++ b/src/liblzma/common/block_header_encoder.c @@ -126,7 +126,7 @@ lzma_block_header_encode(const lzma_block *block, uint8_t *out) memzero(out + out_pos, out_size - out_pos); // CRC32 - unaligned_write32le(out + out_size, lzma_crc32(out, out_size, 0)); + write32le(out + out_size, lzma_crc32(out, out_size, 0)); return LZMA_OK; } diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h index 25debf6a..dcfd8d6f 100644 --- a/src/liblzma/common/memcmplen.h +++ b/src/liblzma/common/memcmplen.h @@ -61,8 +61,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // to __builtin_clzll(). #define LZMA_MEMCMPLEN_EXTRA 8 while (len < limit) { - const uint64_t x = unaligned_read64ne(buf1 + len) - - unaligned_read64ne(buf2 + len); + const uint64_t x = read64ne(buf1 + len) - read64ne(buf2 + len); if (x != 0) { # if defined(_M_X64) // MSVC or Intel C compiler on Windows unsigned long tmp; @@ -112,8 +111,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // Generic 32-bit little endian method # define LZMA_MEMCMPLEN_EXTRA 4 while (len < limit) { - uint32_t x = unaligned_read32ne(buf1 + len) - - unaligned_read32ne(buf2 + len); + uint32_t x = read32ne(buf1 + len) - read32ne(buf2 + len); if (x != 0) { if ((x & 0xFFFF) == 0) { len += 2; @@ -135,8 +133,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2, // Generic 32-bit big endian method # define LZMA_MEMCMPLEN_EXTRA 4 while (len < limit) { - uint32_t x = unaligned_read32ne(buf1 + len) - ^ unaligned_read32ne(buf2 + len); + uint32_t x = read32ne(buf1 + len) ^ read32ne(buf2 + len); if (x != 0) { if ((x & 0xFFFF0000) == 0) { len += 2; diff --git a/src/liblzma/common/stream_flags_decoder.c b/src/liblzma/common/stream_flags_decoder.c index 1bc2f97c..4e43e359 100644 --- a/src/liblzma/common/stream_flags_decoder.c +++ b/src/liblzma/common/stream_flags_decoder.c @@ -38,7 +38,7 @@ lzma_stream_header_decode(lzma_stream_flags *options, const uint8_t *in) // and unsupported files. const uint32_t crc = lzma_crc32(in + sizeof(lzma_header_magic), LZMA_STREAM_FLAGS_SIZE, 0); - if (crc != unaligned_read32le(in + sizeof(lzma_header_magic) + if (crc != read32le(in + sizeof(lzma_header_magic) + LZMA_STREAM_FLAGS_SIZE)) return LZMA_DATA_ERROR; @@ -67,7 +67,7 @@ lzma_stream_footer_decode(lzma_stream_flags *options, const uint8_t *in) // CRC32 const uint32_t crc = lzma_crc32(in + sizeof(uint32_t), sizeof(uint32_t) + LZMA_STREAM_FLAGS_SIZE, 0); - if (crc != unaligned_read32le(in)) + if (crc != read32le(in)) return LZMA_DATA_ERROR; // Stream Flags @@ -75,7 +75,7 @@ lzma_stream_footer_decode(lzma_stream_flags *options, const uint8_t *in) return LZMA_OPTIONS_ERROR; // Backward Size - options->backward_size = unaligned_read32le(in + sizeof(uint32_t)); + options->backward_size = read32le(in + sizeof(uint32_t)); options->backward_size = (options->backward_size + 1) * 4; return LZMA_OK; diff --git a/src/liblzma/common/stream_flags_encoder.c b/src/liblzma/common/stream_flags_encoder.c index 4e717159..b98ab17c 100644 --- a/src/liblzma/common/stream_flags_encoder.c +++ b/src/liblzma/common/stream_flags_encoder.c @@ -46,8 +46,8 @@ lzma_stream_header_encode(const lzma_stream_flags *options, uint8_t *out) const uint32_t crc = lzma_crc32(out + sizeof(lzma_header_magic), LZMA_STREAM_FLAGS_SIZE, 0); - unaligned_write32le(out + sizeof(lzma_header_magic) - + LZMA_STREAM_FLAGS_SIZE, crc); + write32le(out + sizeof(lzma_header_magic) + LZMA_STREAM_FLAGS_SIZE, + crc); return LZMA_OK; } @@ -66,7 +66,7 @@ lzma_stream_footer_encode(const lzma_stream_flags *options, uint8_t *out) if (!is_backward_size_valid(options)) return LZMA_PROG_ERROR; - unaligned_write32le(out + 4, options->backward_size / 4 - 1); + write32le(out + 4, options->backward_size / 4 - 1); // Stream Flags if (stream_flags_encode(options, out + 2 * 4)) @@ -76,7 +76,7 @@ lzma_stream_footer_encode(const lzma_stream_flags *options, uint8_t *out) const uint32_t crc = lzma_crc32( out + 4, 4 + LZMA_STREAM_FLAGS_SIZE, 0); - unaligned_write32le(out, crc); + write32le(out, crc); // Magic memcpy(out + 2 * 4 + LZMA_STREAM_FLAGS_SIZE, diff --git a/src/liblzma/lz/lz_encoder_hash.h b/src/liblzma/lz/lz_encoder_hash.h index f238f9d9..fb15c581 100644 --- a/src/liblzma/lz/lz_encoder_hash.h +++ b/src/liblzma/lz/lz_encoder_hash.h @@ -39,7 +39,7 @@ // Endianness doesn't matter in hash_2_calc() (no effect on the output). #ifdef TUKLIB_FAST_UNALIGNED_ACCESS # define hash_2_calc() \ - const uint32_t hash_value = unaligned_read16ne(cur) + const uint32_t hash_value = read16ne(cur) #else # define hash_2_calc() \ const uint32_t hash_value \ diff --git a/src/liblzma/lzma/lzma_decoder.c b/src/liblzma/lzma/lzma_decoder.c index 9af500f0..e605a0a9 100644 --- a/src/liblzma/lzma/lzma_decoder.c +++ b/src/liblzma/lzma/lzma_decoder.c @@ -1049,7 +1049,7 @@ lzma_lzma_props_decode(void **options, const lzma_allocator *allocator, // All dictionary sizes are accepted, including zero. LZ decoder // will automatically use a dictionary at least a few KiB even if // a smaller dictionary is requested. - opt->dict_size = unaligned_read32le(props + 1); + opt->dict_size = read32le(props + 1); opt->preset_dict = NULL; opt->preset_dict_size = 0; diff --git a/src/liblzma/lzma/lzma_encoder.c b/src/liblzma/lzma/lzma_encoder.c index ba9ce698..07d2b87b 100644 --- a/src/liblzma/lzma/lzma_encoder.c +++ b/src/liblzma/lzma/lzma_encoder.c @@ -663,7 +663,7 @@ lzma_lzma_props_encode(const void *options, uint8_t *out) if (lzma_lzma_lclppb_encode(opt, out)) return LZMA_PROG_ERROR; - unaligned_write32le(out + 1, opt->dict_size); + write32le(out + 1, opt->dict_size); return LZMA_OK; } diff --git a/src/liblzma/lzma/lzma_encoder_private.h b/src/liblzma/lzma/lzma_encoder_private.h index e3d79429..2e34aace 100644 --- a/src/liblzma/lzma/lzma_encoder_private.h +++ b/src/liblzma/lzma/lzma_encoder_private.h @@ -25,8 +25,7 @@ // MATCH_LEN_MIN bytes. Unaligned access gives tiny gain so there's no // reason to not use it when it is supported. #ifdef TUKLIB_FAST_UNALIGNED_ACCESS -# define not_equal_16(a, b) \ - (unaligned_read16ne(a) != unaligned_read16ne(b)) +# define not_equal_16(a, b) (read16ne(a) != read16ne(b)) #else # define not_equal_16(a, b) \ ((a)[0] != (b)[0] || (a)[1] != (b)[1]) diff --git a/src/liblzma/simple/simple_decoder.c b/src/liblzma/simple/simple_decoder.c index 1d864f2b..dc4d2415 100644 --- a/src/liblzma/simple/simple_decoder.c +++ b/src/liblzma/simple/simple_decoder.c @@ -28,7 +28,7 @@ lzma_simple_props_decode(void **options, const lzma_allocator *allocator, if (opt == NULL) return LZMA_MEM_ERROR; - opt->start_offset = unaligned_read32le(props); + opt->start_offset = read32le(props); // Don't leave an options structure allocated if start_offset is zero. if (opt->start_offset == 0) diff --git a/src/liblzma/simple/simple_encoder.c b/src/liblzma/simple/simple_encoder.c index 8aa463be..d2cc03e5 100644 --- a/src/liblzma/simple/simple_encoder.c +++ b/src/liblzma/simple/simple_encoder.c @@ -32,7 +32,7 @@ lzma_simple_props_encode(const void *options, uint8_t *out) if (opt == NULL || opt->start_offset == 0) return LZMA_OK; - unaligned_write32le(out, opt->start_offset); + write32le(out, opt->start_offset); return LZMA_OK; } diff --git a/tests/test_block_header.c b/tests/test_block_header.c index 7cd38985..373a8077 100644 --- a/tests/test_block_header.c +++ b/tests/test_block_header.c @@ -212,7 +212,7 @@ test3(void) // Unsupported filter // NOTE: This may need updating when new IDs become supported. buf[2] ^= 0x1F; - unaligned_write32le(buf + known_options.header_size - 4, + 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); @@ -220,7 +220,7 @@ test3(void) // Non-nul Padding buf[known_options.header_size - 4 - 1] ^= 1; - unaligned_write32le(buf + known_options.header_size - 4, + 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); diff --git a/tests/test_stream_flags.c b/tests/test_stream_flags.c index b40d035b..39304cd4 100644 --- a/tests/test_stream_flags.c +++ b/tests/test_stream_flags.c @@ -133,13 +133,13 @@ test_decode_invalid(void) // Test 2a (valid CRC32) uint32_t crc = lzma_crc32(buffer + 6, 2, 0); - unaligned_write32le(buffer + 8, crc); + write32le(buffer + 8, crc); succeed(test_header_decoder(LZMA_OK)); // Test 2b (invalid Stream Flags with valid CRC32) buffer[6] ^= 0x20; crc = lzma_crc32(buffer + 6, 2, 0); - unaligned_write32le(buffer + 8, crc); + write32le(buffer + 8, crc); succeed(test_header_decoder(LZMA_OPTIONS_ERROR)); // Test 3 (invalid CRC32) @@ -151,7 +151,7 @@ test_decode_invalid(void) expect(lzma_stream_footer_encode(&known_flags, buffer) == LZMA_OK); buffer[9] ^= 0x40; crc = lzma_crc32(buffer + 4, 6, 0); - unaligned_write32le(buffer, crc); + write32le(buffer, crc); succeed(test_footer_decoder(LZMA_OPTIONS_ERROR)); // Test 5 (invalid Magic Bytes) -- cgit v1.2.3 From 609c7067859146ffc62ac655f6ba53599c891801 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 19:56:09 +0200 Subject: xz: Enable Capsicum sandboxing by default if available. It has been enabled in FreeBSD for a while and reported to work fine. Thanks to Xin Li. --- INSTALL | 6 ------ configure.ac | 8 ++++---- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/INSTALL b/INSTALL index 2321dabf..e0df3f4a 100644 --- a/INSTALL +++ b/INSTALL @@ -403,12 +403,6 @@ XZ Utils Installation one thread, something bad may happen. --enable-sandbox=METHOD - This feature is EXPERIMENTAL in the XZ Utils 5.2.x and - disabled by default. If you test this, look especially - if message translations and locale-specific decimal and - thousand separators (e.g. xz --list foo.xz) work the - same way as they do without sandboxing. - There is limited sandboxing support in the xz tool. If built with sandbox support, it's used automatically when (de)compressing exactly one file to standard output and diff --git a/configure.ac b/configure.ac index 63afd8c2..d14fa40d 100644 --- a/configure.ac +++ b/configure.ac @@ -498,10 +498,10 @@ AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes]) AC_MSG_CHECKING([if sandboxing should be used]) AC_ARG_ENABLE([sandbox], [AS_HELP_STRING([--enable-sandbox=METHOD], - [This is an experimental feature. - Sandboxing METHOD can be `auto', `no', or `capsicum'. - The default is `no'.])], - [], [enable_sandbox=no]) + [Sandboxing METHOD can be `auto', `no', or `capsicum'. + The default is `auto' which enables sandboxing if + a supported sandboxing method is found.])], + [], [enable_sandbox=auto]) case $enable_sandbox in auto) AC_MSG_RESULT([maybe (autodetect)]) -- cgit v1.2.3 From 15b55d5c63d27f81776edb1abc05872a751fc674 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 13:27:51 +0200 Subject: xz: Move the setting of flush_needed in file_io.c to a nicer location. --- src/xz/file_io.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 6db62e76..a73efcb9 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -266,11 +266,8 @@ io_wait(file_pair *pair, int timeout, bool is_reading) return IO_WAIT_ERROR; } - if (ret == 0) { - assert(opt_flush_timeout != 0); - flush_needed = true; + if (ret == 0) return IO_WAIT_TIMEOUT; - } if (pfd[0].revents != 0) return IO_WAIT_MORE; @@ -1147,6 +1144,7 @@ io_read(file_pair *pair, io_buf *buf_union, size_t size) return SIZE_MAX; case IO_WAIT_TIMEOUT: + flush_needed = true; return size - left; default: -- cgit v1.2.3 From f6d24245349cecfae6ec0d2366fa80716c9f6d37 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 13:37:08 +0200 Subject: xz: Update a comment in file_io.h. --- src/xz/file_io.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/xz/file_io.h b/src/xz/file_io.h index 6722aef8..32dcad0c 100644 --- a/src/xz/file_io.h +++ b/src/xz/file_io.h @@ -20,7 +20,10 @@ /// is_sparse() accesses the buffer as uint64_t for maximum speed. -/// Use an union to make sure that the buffer is properly aligned. +/// The u32 and u64 members must only be access through this union +/// to avoid strict aliasing violations. Taking a pointer of u8 +/// should be fine as long as uint8_t maps to unsigned char which +/// can alias anything. typedef union { uint8_t u8[IO_BUFFER_SIZE]; uint32_t u32[IO_BUFFER_SIZE / sizeof(uint32_t)]; -- cgit v1.2.3 From 38915703241e69a64f133ff9a02ec9100c6019c6 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 13:47:31 +0200 Subject: xz: Refactor io_read() a bit. --- src/xz/file_io.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/xz/file_io.c b/src/xz/file_io.c index a73efcb9..1512cc12 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -1107,16 +1107,16 @@ io_fix_src_pos(file_pair *pair, size_t rewind_size) extern size_t -io_read(file_pair *pair, io_buf *buf_union, size_t size) +io_read(file_pair *pair, io_buf *buf, size_t size) { // We use small buffers here. assert(size < SSIZE_MAX); - uint8_t *buf = buf_union->u8; - size_t left = size; + size_t pos = 0; - while (left > 0) { - const ssize_t amount = read(pair->src_fd, buf, left); + while (pos < size) { + const ssize_t amount = read( + pair->src_fd, buf->u8 + pos, size - pos); if (amount == 0) { pair->src_eof = true; @@ -1145,7 +1145,7 @@ io_read(file_pair *pair, io_buf *buf_union, size_t size) case IO_WAIT_TIMEOUT: flush_needed = true; - return size - left; + return pos; default: message_bug(); @@ -1159,11 +1159,10 @@ io_read(file_pair *pair, io_buf *buf_union, size_t size) return SIZE_MAX; } - buf += (size_t)(amount); - left -= (size_t)(amount); + pos += (size_t)(amount); } - return size - left; + return pos; } -- cgit v1.2.3 From ec26f3ace5f9b260ca91508030f07465ae2f9f78 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 14:13:42 +0200 Subject: xz: Fix semi-busy-waiting in xz --flush-timeout. When input blocked, xz --flush-timeout=1 would wake up every millisecond and initiate flushing which would have nothing to flush and thus would just waste CPU time. The fix disables the timeout when no input has been seen since the previous flush. --- src/xz/coder.c | 4 ++++ src/xz/file_io.c | 15 +++++++++++---- src/xz/file_io.h | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index 1cd03857..3f561851 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -729,6 +729,10 @@ coder_normal(file_pair *pair) // Set the time of the most recent flushing. mytime_set_flush_time(); + + // Mark that we haven't seen any new input + // since the previous flush. + pair->src_has_seen_input = false; } else { // Start a new Block after LZMA_FULL_BARRIER. if (opt_block_list == NULL) { diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 1512cc12..04e58c51 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -749,6 +749,7 @@ io_open_src(const char *src_name) .src_fd = -1, .dest_fd = -1, .src_eof = false, + .src_has_seen_input = false, .dest_try_sparse = false, .dest_pending_sparse = 0, }; @@ -1133,10 +1134,15 @@ io_read(file_pair *pair, io_buf *buf, size_t size) #ifndef TUKLIB_DOSLIKE if (IS_EAGAIN_OR_EWOULDBLOCK(errno)) { - const io_wait_ret ret = io_wait(pair, - mytime_get_flush_timeout(), - true); - switch (ret) { + // Disable the flush-timeout if no input has + // been seen since the previous flush and thus + // there would be nothing to flush after the + // timeout expires (avoids busy waiting). + const int timeout = pair->src_has_seen_input + ? mytime_get_flush_timeout() + : -1; + + switch (io_wait(pair, timeout, true)) { case IO_WAIT_MORE: continue; @@ -1160,6 +1166,7 @@ io_read(file_pair *pair, io_buf *buf, size_t size) } pos += (size_t)(amount); + pair->src_has_seen_input = true; } return pos; diff --git a/src/xz/file_io.h b/src/xz/file_io.h index 32dcad0c..3989c701 100644 --- a/src/xz/file_io.h +++ b/src/xz/file_io.h @@ -49,6 +49,10 @@ typedef struct { /// True once end of the source file has been detected. bool src_eof; + /// For --flush-timeout: True if at least one byte has been read + /// since the previous flush or the start of the file. + bool src_has_seen_input; + /// If true, we look for long chunks of zeros and try to create /// a sparse file. bool dest_try_sparse; -- cgit v1.2.3 From 4afe69d30b66812682a2016ee18441958019cbb2 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 14:49:22 +0200 Subject: xz: coder.c: Make writing output a separate function. The same code sequence repeats so it's nicer as a separate function. Note that in one case there was no test for opt_mode != MODE_TEST, but that was only because that condition would always be true, so this commit doesn't change the behavior there. --- src/xz/coder.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index 3f561851..96f8e734 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -612,6 +612,20 @@ split_block(uint64_t *block_remaining, } +static bool +coder_write_output(file_pair *pair) +{ + if (opt_mode != MODE_TEST) { + if (io_write(pair, &out_buf, IO_BUFFER_SIZE - strm.avail_out)) + return true; + } + + strm.next_out = out_buf.u8; + strm.avail_out = IO_BUFFER_SIZE; + return false; +} + + /// Compress or decompress using liblzma. static bool coder_normal(file_pair *pair) @@ -706,12 +720,8 @@ coder_normal(file_pair *pair) // Write out if the output buffer became full. if (strm.avail_out == 0) { - if (opt_mode != MODE_TEST && io_write(pair, &out_buf, - IO_BUFFER_SIZE - strm.avail_out)) + if (coder_write_output(pair)) break; - - strm.next_out = out_buf.u8; - strm.avail_out = IO_BUFFER_SIZE; } if (ret == LZMA_STREAM_END && (action == LZMA_SYNC_FLUSH @@ -720,13 +730,9 @@ coder_normal(file_pair *pair) // Flushing completed. Write the pending data // out immediately so that the reading side // can decompress everything compressed so far. - if (io_write(pair, &out_buf, IO_BUFFER_SIZE - - strm.avail_out)) + if (coder_write_output(pair)) break; - strm.next_out = out_buf.u8; - strm.avail_out = IO_BUFFER_SIZE; - // Set the time of the most recent flushing. mytime_set_flush_time(); @@ -762,9 +768,7 @@ coder_normal(file_pair *pair) // as much data as possible, which can be good // when trying to get at least some useful // data out of damaged files. - if (opt_mode != MODE_TEST && io_write(pair, - &out_buf, IO_BUFFER_SIZE - - strm.avail_out)) + if (coder_write_output(pair)) break; } -- cgit v1.2.3 From acc0ef3ac80f18e349c6d0252177707105c0a29c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 20:19:19 +0200 Subject: xz: Move flush_needed from mytime.h to file_pair struct in file_io.h. --- src/xz/coder.c | 3 ++- src/xz/file_io.c | 3 ++- src/xz/file_io.h | 3 +++ src/xz/mytime.c | 3 --- src/xz/mytime.h | 4 ---- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index 96f8e734..8bad038e 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -711,7 +711,7 @@ coder_normal(file_pair *pair) action = LZMA_FULL_BARRIER; } - if (action == LZMA_RUN && flush_needed) + if (action == LZMA_RUN && pair->flush_needed) action = LZMA_SYNC_FLUSH; } @@ -739,6 +739,7 @@ coder_normal(file_pair *pair) // Mark that we haven't seen any new input // since the previous flush. pair->src_has_seen_input = false; + pair->flush_needed = false; } else { // Start a new Block after LZMA_FULL_BARRIER. if (opt_block_list == NULL) { diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 04e58c51..c891f3ca 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -750,6 +750,7 @@ io_open_src(const char *src_name) .dest_fd = -1, .src_eof = false, .src_has_seen_input = false, + .flush_needed = false, .dest_try_sparse = false, .dest_pending_sparse = 0, }; @@ -1150,7 +1151,7 @@ io_read(file_pair *pair, io_buf *buf, size_t size) return SIZE_MAX; case IO_WAIT_TIMEOUT: - flush_needed = true; + pair->flush_needed = true; return pos; default: diff --git a/src/xz/file_io.h b/src/xz/file_io.h index 3989c701..c533d641 100644 --- a/src/xz/file_io.h +++ b/src/xz/file_io.h @@ -53,6 +53,9 @@ typedef struct { /// since the previous flush or the start of the file. bool src_has_seen_input; + /// For --flush-timeout: True when flushing is needed. + bool flush_needed; + /// If true, we look for long chunks of zeros and try to create /// a sparse file. bool dest_try_sparse; diff --git a/src/xz/mytime.c b/src/xz/mytime.c index 95138840..573b97de 100644 --- a/src/xz/mytime.c +++ b/src/xz/mytime.c @@ -17,7 +17,6 @@ #endif uint64_t opt_flush_timeout = 0; -bool flush_needed; static uint64_t start_time; static uint64_t next_flush; @@ -53,7 +52,6 @@ mytime_set_start_time(void) { start_time = mytime_now(); next_flush = start_time + opt_flush_timeout; - flush_needed = false; return; } @@ -69,7 +67,6 @@ extern void mytime_set_flush_time(void) { next_flush = mytime_now() + opt_flush_timeout; - flush_needed = false; return; } diff --git a/src/xz/mytime.h b/src/xz/mytime.h index 4505724c..a7be2aa7 100644 --- a/src/xz/mytime.h +++ b/src/xz/mytime.h @@ -21,10 +21,6 @@ extern uint64_t opt_flush_timeout; -/// \brief True when flushing is needed due to expired timeout -extern bool flush_needed; - - /// \brief Store the time when (de)compression was started /// /// The start time is also stored as the time of the first flush. -- cgit v1.2.3 From 4433c2dc5727ee6aef570e001a5a024e0d94e609 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 26 Jan 2020 20:53:25 +0200 Subject: xz: Set the --flush-timeout deadline when the first input byte arrives. xz --flush-timeout=2000, old version: 1. xz is started. The next flush will happen after two seconds. 2. No input for one second. 3. A burst of a few kilobytes of input. 4. No input for one second. 5. Two seconds have passed and flushing starts. The first second counted towards the flush-timeout even though there was no pending data. This can cause flushing to occur more often than needed. xz --flush-timeout=2000, after this commit: 1. xz is started. 2. No input for one second. 3. A burst of a few kilobytes of input. The next flush will happen after two seconds counted from the time when the first bytes of the burst were read. 4. No input for one second. 5. No input for another second. 6. Two seconds have passed and flushing starts. --- src/xz/coder.c | 6 +----- src/xz/file_io.c | 6 +++++- src/xz/mytime.c | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index 8bad038e..85f95439 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -733,9 +733,6 @@ coder_normal(file_pair *pair) if (coder_write_output(pair)) break; - // Set the time of the most recent flushing. - mytime_set_flush_time(); - // Mark that we haven't seen any new input // since the previous flush. pair->src_has_seen_input = false; @@ -906,8 +903,7 @@ coder_run(const char *filename) // is used. if (opt_mode == MODE_TEST || !io_open_dest(pair)) { // Remember the current time. It is needed - // for progress indicator and for timed - // flushing. + // for progress indicator. mytime_set_start_time(); // Initialize the progress indicator. diff --git a/src/xz/file_io.c b/src/xz/file_io.c index c891f3ca..464a8b15 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -1167,7 +1167,11 @@ io_read(file_pair *pair, io_buf *buf, size_t size) } pos += (size_t)(amount); - pair->src_has_seen_input = true; + + if (!pair->src_has_seen_input) { + pair->src_has_seen_input = true; + mytime_set_flush_time(); + } } return pos; diff --git a/src/xz/mytime.c b/src/xz/mytime.c index 573b97de..70444001 100644 --- a/src/xz/mytime.c +++ b/src/xz/mytime.c @@ -51,7 +51,6 @@ extern void mytime_set_start_time(void) { start_time = mytime_now(); - next_flush = start_time + opt_flush_timeout; return; } -- cgit v1.2.3 From d0daa21792ff861e5423bbd82aaa6c8ba9fa0462 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 1 Feb 2020 19:56:18 +0200 Subject: xz: Limit --memlimit-compress to at most 4020 MiB for 32-bit xz. See the code comment for reasoning. It's far from perfect but hopefully good enough for certain cases while hopefully doing nothing bad in other situations. At presets -5 ... -9, 4020 MiB vs. 4096 MiB makes no difference on how xz scales down the number of threads. The limit has to be a few MiB below 4096 MiB because otherwise things like "xz --lzma2=dict=500MiB" won't scale down the dict size enough and xz cannot allocate enough memory. With "ulimit -v $((4096 * 1024))" on x86-64, the limit in xz had to be no more than 4085 MiB. Some safety margin is good though. This is hack but it should be useful when running 32-bit xz on a 64-bit kernel that gives full 4 GiB address space to xz. Hopefully this is enough to solve this: https://bugzilla.redhat.com/show_bug.cgi?id=1196786 FreeBSD has a patch that limits the result in tuklib_physmem() to SIZE_MAX on 32-bit systems. While I think it's not the way to do it, the results on --memlimit-compress have been good. This commit should achieve practically identical results for compression while leaving decompression and tuklib_physmem() and thus lzma_physmem() unaffected. --- src/xz/hardware.c | 32 +++++++++++++++++++++++++++++++- src/xz/xz.1 | 21 ++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/xz/hardware.c b/src/xz/hardware.c index ff32f6d3..e746cf91 100644 --- a/src/xz/hardware.c +++ b/src/xz/hardware.c @@ -68,9 +68,39 @@ hardware_memlimit_set(uint64_t new_memlimit, new_memlimit = (uint32_t)new_memlimit * total_ram / 100; } - if (set_compress) + if (set_compress) { memlimit_compress = new_memlimit; +#if SIZE_MAX == UINT32_MAX + // FIXME? + // + // When running a 32-bit xz on a system with a lot of RAM and + // using a percentage-based memory limit, the result can be + // bigger than the 32-bit address space. Limiting the limit + // below SIZE_MAX for compression (not decompression) makes + // xz lower the compression settings (or number of threads) + // to a level that *might* work. In practice it has worked + // when using a 64-bit kernel that gives full 4 GiB address + // space to 32-bit programs. In other situations this might + // still be too high, like 32-bit kernels that may give much + // less than 4 GiB to a single application. + // + // So this is an ugly hack but I will keep it here while + // it does more good than bad. + // + // 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. + const uint64_t limit_max = UINT64_C(4020) << 20; + + // UINT64_MAX is a special case for the string "max" so + // that has to be handled specially. + if (memlimit_compress != UINT64_MAX + && memlimit_compress > limit_max) + memlimit_compress = limit_max; +#endif + } + if (set_decompress) memlimit_decompress = new_memlimit; diff --git a/src/xz/xz.1 b/src/xz/xz.1 index 6b949640..540d1364 100644 --- a/src/xz/xz.1 +++ b/src/xz/xz.1 @@ -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 "2019-05-11" "Tukaani" "XZ Utils" +.TH XZ 1 "2020-02-01" "Tukaani" "XZ Utils" . .SH NAME xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files @@ -1005,6 +1005,25 @@ instead of until the details have been decided. .RE .IP "" +For 32-bit +.BR xz +there is a special case: if the +.I limit +would be over +.BR "4020\ MiB" , +the +.I limit +is set to +.BR "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. +.IP "" See also the section .BR "Memory usage" . .TP -- cgit v1.2.3 From 93a1f61e892e145607dd938e3b30098af19a1672 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 3 Feb 2020 22:03:50 +0200 Subject: Build: Update m4/ax_pthread.m4 from Autoconf Archive. --- m4/ax_pthread.m4 | 398 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 279 insertions(+), 119 deletions(-) diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 index d383ad5c..0300e4ed 100644 --- a/m4/ax_pthread.m4 +++ b/m4/ax_pthread.m4 @@ -1,5 +1,5 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_pthread.html +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS @@ -19,10 +19,10 @@ # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, -# but also link it with them as well. e.g. you should link with +# but also to link with them as well. For example, you might link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # -# If you are only building threads programs, you may wish to use these +# 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" @@ -30,8 +30,8 @@ # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant -# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name -# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # PTHREAD_PRIO_INHERIT symbol is defined when compiling with @@ -67,7 +67,7 @@ # Public License for more details. # # You should have received a copy of the GNU General Public License along -# with this program. If not, see . +# with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure @@ -82,35 +82,40 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 21 +#serial 26 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) AC_LANG_PUSH([C]) ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). +# requires special compiler flags (e.g. on Tru64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) AC_MSG_RESULT([$ax_pthread_ok]) - if test x"$ax_pthread_ok" = xno; then + if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" fi # We must check for the threads library under a number of different @@ -123,7 +128,7 @@ fi # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. -ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: @@ -132,82 +137,225 @@ ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mt # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) -case ${host_os} in +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ;; +esac + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) - ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" ;; - darwin*) - ax_pthread_flags="-pthread $ax_pthread_flags" + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" ;; esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [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 + # (.c -> exe), because the warning occurs only in the second + # 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_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 + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) -# Clang doesn't consider unrecognized options an error unless we specify -# -Werror. We throw in some extra Clang-specific options to ensure that -# this doesn't happen for GCC, which also accepts -Werror. + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac -AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) -save_CFLAGS="$CFLAGS" -ax_pthread_extra_flags="-Werror" -CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], - [AC_MSG_RESULT([yes])], - [ax_pthread_extra_flags= - AC_MSG_RESULT([no])]) -CFLAGS="$save_CFLAGS" +fi # $ax_pthread_clang = yes -if test x"$ax_pthread_ok" = xno; then -for flag in $ax_pthread_flags; do +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do - case $flag in + case $ax_pthread_try_flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; + -mt,pthread) + AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" + ;; + -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) - if test x"$ax_pthread_config" = xno; then continue; fi + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -218,8 +366,18 @@ for flag in $ax_pthread_flags; do # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include - static void routine(void *a) { a = 0; } +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } static void *start_routine(void *a) { return a; }], [pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); @@ -227,16 +385,14 @@ for flag in $ax_pthread_flags; do pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) + [ax_pthread_ok=yes], + []) - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" AC_MSG_RESULT([$ax_pthread_ok]) - if test "x$ax_pthread_ok" = xyes; then - break; - fi + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -244,71 +400,75 @@ done fi # Various other checks: -if test "x$ax_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [int attr = $attr; return attr /* ; */])], - [attr_name=$attr; break], - []) - done - AC_MSG_RESULT([$attr_name]) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case ${host_os} in - aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; - osf* | hpux*) flag="-D_REENTRANT";; - solaris*) - if test "$GCC" = "yes"; then - flag="-D_REENTRANT" - else - # TODO: What about Clang on Solaris? - flag="-mt -D_REENTRANT" - fi - ;; - esac - AC_MSG_RESULT([$flag]) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_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"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - [ax_cv_PTHREAD_PRIO_INHERIT], [ - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[int i = PTHREAD_PRIO_INHERIT;]])], - [ax_cv_PTHREAD_PRIO_INHERIT=yes], - [ax_cv_PTHREAD_PRIO_INHERIT=no]) + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT; + return i;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) - AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" # More AIX lossage: compile with *_r variant - if test "x$GCC" != xyes; then + if test "x$GCC" != "xyes"; then case $host_os in aix*) AS_CASE(["x/$CC"], - [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], - [#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])])]) + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#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])])]) ;; esac fi @@ -321,7 +481,7 @@ AC_SUBST([PTHREAD_CFLAGS]) AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$ax_pthread_ok" = xyes; then +if test "x$ax_pthread_ok" = "xyes"; then ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else -- cgit v1.2.3 From 8238192652290df78bd728b20e3f6542d1a2819e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 19:33:37 +0200 Subject: Build: Workaround a POSIX shell detection problem on Solaris. I don't know if the problem is in gnulib's gl_POSIX_SHELL macro or if xzgrep does something that isn't in POSIX. The workaround adds a special case for Solaris: if /usr/xpg4/bin/sh exists and gl_cv_posix_shell wasn't overriden on the configure command line, use that shell for xzgrep and other scripts. That shell is known to work and exists on most Solaris systems. --- configure.ac | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configure.ac b/configure.ac index d14fa40d..c8f76e43 100644 --- a/configure.ac +++ b/configure.ac @@ -547,6 +547,16 @@ AC_SUBST([enable_path_for_scripts]) ############################################################################### echo +case $host_os in + solaris*) + # The gnulib POSIX shell macro below may pick a shell that + # doesn't work with xzgrep. Workaround by picking a shell + # that is known to work. + if test -z "$gl_cv_posix_shell" && test -x /usr/xpg4/bin/sh; then + gl_cv_posix_shell=/usr/xpg4/bin/sh + fi + ;; +esac gl_POSIX_SHELL if test -z "$POSIX_SHELL" && test "x$enable_scripts" = xyes ; then AC_MSG_ERROR([No POSIX conforming shell (sh) was found.]) -- cgit v1.2.3 From e1beaa74bc7cb5a409d59b55870e01ae7784ce3a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 20:33:50 +0200 Subject: xz: Comment out annoying sandboxing messages. --- src/xz/file_io.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 464a8b15..0ba8db8f 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -170,8 +170,11 @@ static void io_sandbox_enter(int src_fd) { if (!sandbox_allowed) { - message(V_DEBUG, _("Sandbox is disabled due " - "to incompatible command line arguments")); + // This message is more often annoying than useful so + // it's commented out. It can be useful when developing + // the sandboxing code. + //message(V_DEBUG, _("Sandbox is disabled due " + // "to incompatible command line arguments")); return; } @@ -213,7 +216,8 @@ io_sandbox_enter(int src_fd) # error ENABLE_SANDBOX is defined but no sandboxing method was found. #endif - message(V_DEBUG, _("Sandbox was successfully enabled")); + // This message is annoying in xz -lvv. + //message(V_DEBUG, _("Sandbox was successfully enabled")); return; error: -- cgit v1.2.3 From 68c60735bbb6e51d4205ba8a9fde307bcfb22f8c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 20:47:38 +0200 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 6000298f..1bc1f9c4 100644 --- a/THANKS +++ b/THANKS @@ -59,6 +59,7 @@ has been important. :-) In alphabetical order: - Andraž 'ruskie' Levstik - Cary Lewis - Wim Lewis + - Xin Li - Eric Lindblad - Lorenzo De Liso - Bela Lubkin -- cgit v1.2.3 From 6912472fafb656be8f4c5b4ac9ea28fea3065de4 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 22:28:51 +0200 Subject: Update m4/.gitignore. --- m4/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/m4/.gitignore b/m4/.gitignore index 20f26034..18d4a4f2 100644 --- a/m4/.gitignore +++ b/m4/.gitignore @@ -1,4 +1,5 @@ codeset.m4 +extern-inline.m4 fcntl-o.m4 gettext.m4 glibc2.m4 -- cgit v1.2.3 From 134bb7765815d5f265eb0bc9e6ebacd9ae4a52bc Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 5 Feb 2020 22:35:06 +0200 Subject: Update tests/.gitignore. --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 3220269a..11dbc591 100644 --- a/.gitignore +++ b/.gitignore @@ -47,11 +47,15 @@ build-aux/test-driver /tests/compress_generated_random /tests/compress_generated_text /tests/create_compress_files +/tests/test_bcj_exact_size /tests/test_block_header /tests/test_check /tests/test_filter_flags /tests/test_index /tests/test_stream_flags +/tests/xzgrep_test_1.xz +/tests/xzgrep_test_2.xz +/tests/xzgrep_test_output /lib/Makefile /tests/Makefile -- cgit v1.2.3 From 882fcfdcd86525cc5c6f6d0bf0230d0089206d13 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 6 Feb 2020 00:04:42 +0200 Subject: Update THANKS (sync with the master branch). --- THANKS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/THANKS b/THANKS index 1bc1f9c4..03e731b6 100644 --- a/THANKS +++ b/THANKS @@ -46,6 +46,7 @@ has been important. :-) In alphabetical order: - Peter Ivanov - Jouk Jansen - Jun I Jin + - Kiyoshi Kanazawa - Per Øyvind Karlsen - Thomas Klausner - Richard Koch @@ -96,6 +97,7 @@ has been important. :-) In alphabetical order: - Alexandre Sauvé - Benno Schulenberg - Andreas Schwab + - Bhargava Shastry - Dan Shechter - Stuart Shelton - Sebastian Andrzej Siewior @@ -108,6 +110,7 @@ has been important. :-) In alphabetical order: - Paul Townsend - Mohammed Adnène Trojette - Alexey Tourbin + - Loganaden Velvindron - Patrick J. Volkerding - Martin Väth - Adam Walling -- cgit v1.2.3 From 4b1447809ffbc0d77c0ad456bd6b3afcf0b8623e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 7 Feb 2020 15:32:21 +0200 Subject: Build: Add support for translated man pages using po4a. The dependency on po4a is optional. It's never required to install the translated man pages when xz is built from a release tarball. If po4a is missing when building from xz.git, the translated man pages won't be generated but otherwise the build will work normally. The translations are only updated automatically by autogen.sh and by "make mydist". This makes it easy to keep po4a as an optional dependency and ensures that I won't forget to put updated translations to a release tarball. The translated man pages aren't installed if --disable-nls is used. The installation of translated man pages abuses Automake internals by calling "install-man" with redefined dist_man_MANS and man_MANS. This makes the hairy script code slightly less hairy. If it breaks some day, this code needs to be fixed; don't blame Automake developers. Also, this adds more quotes to the existing shell script code in the Makefile.am "-hook"s. --- Makefile.am | 4 ++++ autogen.sh | 8 ++++--- po4a/.gitignore | 2 ++ po4a/po4a.conf | 14 +++++++++++ po4a/update-po | 45 ++++++++++++++++++++++++++++++++++ src/scripts/Makefile.am | 64 +++++++++++++++++++++++++++++++++++++------------ src/xz/Makefile.am | 50 +++++++++++++++++++++++++++----------- src/xzdec/Makefile.am | 55 ++++++++++++++++++++++++++++++++---------- 8 files changed, 197 insertions(+), 45 deletions(-) create mode 100644 po4a/.gitignore create mode 100644 po4a/po4a.conf create mode 100755 po4a/update-po diff --git a/Makefile.am b/Makefile.am index 16db5142..3a634991 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,6 +47,7 @@ dist_examplesold_DATA = \ endif EXTRA_DIST = \ + po4a \ extra \ dos \ windows \ @@ -99,8 +100,11 @@ dist-hook: 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 +# would be too late for that). mydist: sh "$(srcdir)/src/liblzma/validate_map.sh" + cd "$(srcdir)/po4a" && sh update-po VERSION=$(VERSION); \ if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \ diff --git a/autogen.sh b/autogen.sh index f0195eca..fb8d983f 100755 --- a/autogen.sh +++ b/autogen.sh @@ -9,14 +9,16 @@ # ############################################################################### -# The result of using "autoreconf -fi" should be identical to using this -# script. I'm leaving this script here just in case someone finds it useful. - set -e -x +# The following six lines are almost identical to "autoreconf -fi" but faster. ${AUTOPOINT:-autopoint} -f ${LIBTOOLIZE:-libtoolize} -c -f || glibtoolize -c -f ${ACLOCAL:-aclocal} -I m4 ${AUTOCONF:-autoconf} ${AUTOHEADER:-autoheader} ${AUTOMAKE:-automake} -acf --foreign + +# Generate the translated man pages if the "po4a" tool is available. +# This is *NOT* done by "autoreconf -fi" or when "make" is run. +cd po4a && sh update-po diff --git a/po4a/.gitignore b/po4a/.gitignore new file mode 100644 index 00000000..5bcfa04b --- /dev/null +++ b/po4a/.gitignore @@ -0,0 +1,2 @@ +/man +/xz-man.pot diff --git a/po4a/po4a.conf b/po4a/po4a.conf new file mode 100644 index 00000000..41a90fc2 --- /dev/null +++ b/po4a/po4a.conf @@ -0,0 +1,14 @@ +# To add a new language, add it to po4a_langs and run "update-po" +# to get a new .po file. After translating the .po file, run +# "update-po" again to generate the translated man pages. + +[po4a_langs] +[po4a_paths] xz-man.pot $lang:$lang.po + +[type: man] ../src/xz/xz.1 $lang:man/$lang/xz.1 +[type: man] ../src/xzdec/xzdec.1 $lang:man/$lang/xzdec.1 +[type: man] ../src/lzmainfo/lzmainfo.1 $lang:man/$lang/lzmainfo.1 +[type: man] ../src/scripts/xzdiff.1 $lang:man/$lang/xzdiff.1 +[type: man] ../src/scripts/xzgrep.1 $lang:man/$lang/xzgrep.1 +[type: man] ../src/scripts/xzless.1 $lang:man/$lang/xzless.1 +[type: man] ../src/scripts/xzmore.1 $lang:man/$lang/xzmore.1 diff --git a/po4a/update-po b/po4a/update-po new file mode 100755 index 00000000..c07af928 --- /dev/null +++ b/po4a/update-po @@ -0,0 +1,45 @@ +#!/bin/sh +# +############################################################################# +# +# Updates xz-man.pot and the *.po files, and generates translated man pages. +# These are done using the program po4a. If po4a is missing, it is still +# possible to build the package without translated man pages. +# +############################################################################# +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# +############################################################################# + +if type po4a > /dev/null 2>&1; then + : +else + echo "po4a/update-po: The program 'po4a' was not found." >&2 + echo "po4a/update-po: Translated man pages were not generated." >&2 + exit 1 +fi + +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 + exit 1 + fi +fi + +PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1 + +# Using --force to get up-to-date version numbers in the output files +# when nothing else has changed. This makes it slower but it's fine +# as long as this isn't run every time when "make" is run at the +# top level directory. (po4a isn't super-fast even without --force). +set -x +po4a --force --verbose \ + --package-name="XZ Utils" \ + --package-version="$PACKAGE_VERSION" \ + --copyright-holder="This file is put in the public domain." \ + po4a.conf diff --git a/src/scripts/Makefile.am b/src/scripts/Makefile.am index 29bdbcd7..fe5742d0 100644 --- a/src/scripts/Makefile.am +++ b/src/scripts/Makefile.am @@ -25,31 +25,65 @@ links += \ endif install-exec-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ for pair in $(links); do \ target=`echo $$pair | sed 's/-.*$$//' | sed '$(transform)'` && \ link=`echo $$pair | sed 's/^.*-//' | sed '$(transform)'` && \ - rm -f $$link && \ - $(LN_S) $$target $$link; \ + rm -f "$$link" && \ + $(LN_S) "$$target" "$$link"; \ done +# The installation of translated man pages abuses Automake internals +# by calling "install-man" with redefined dist_man_MANS and man_MANS. +# If this breaks some day, don't blame Automake developers. install-data-hook: - cd $(DESTDIR)$(mandir)/man1 && \ - for pair in $(links); do \ - target=`echo $$pair | sed 's/-.*$$//' | sed '$(transform)'` && \ - link=`echo $$pair | sed 's/^.*-//' | sed '$(transform)'` && \ - rm -f $$link.1 && \ - $(LN_S) $$target.1 $$link.1; \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ + for lang in $$languages; do \ + mans= ; \ + for man in $(dist_man_MANS); do \ + man="$(top_srcdir)/po4a/man/$$lang/$$man" ; \ + if test -f "$$man"; then \ + mans="$$mans $$man"; \ + fi; \ + done; \ + $(MAKE) dist_man_MANS="$$mans" man_MANS= \ + mandir="$(mandir)/$$lang" install-man; \ + done; \ + for lang in . $$languages; do \ + for pair in $(links); do \ + target=`echo $$pair | sed 's/-.*$$//' \ + | sed '$(transform)'` && \ + link=`echo $$pair | sed 's/^.*-//' \ + | sed '$(transform)'` && \ + man1dir="$(DESTDIR)$(mandir)/$$lang/man1" && \ + if test -f "$$man1dir/$$target.1"; then ( \ + cd "$$man1dir" && \ + rm -f "$$link.1" && \ + $(LN_S) "$$target.1" "$$link.1" \ + ); fi; \ + done; \ done uninstall-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ for pair in $(links); do \ link=`echo $$pair | sed 's/^.*-//' | sed '$(transform)'` && \ - rm -f $$link; \ + rm -f "$$link"; \ done - cd $(DESTDIR)$(mandir)/man1 && \ - for pair in $(links); do \ - link=`echo $$pair | sed 's/^.*-//' | sed '$(transform)'` && \ - rm -f $$link.1; \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ + for lang in . $$languages; do \ + for pair in $(links); do \ + target=`echo $$pair | sed 's/-.*$$//' \ + | sed '$(transform)'` && \ + link=`echo $$pair | sed 's/^.*-//' \ + | sed '$(transform)'` && \ + rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$target.1" \ + "$(DESTDIR)$(mandir)/$$lang/man1/$$link.1"; \ + done; \ done diff --git a/src/xz/Makefile.am b/src/xz/Makefile.am index 0890aad7..4bc64f36 100644 --- a/src/xz/Makefile.am +++ b/src/xz/Makefile.am @@ -81,31 +81,53 @@ xzlinks += lzma unlzma lzcat endif install-exec-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ target=`echo xz | sed '$(transform)'`$(EXEEXT) && \ for name in $(xzlinks); do \ link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \ - rm -f $$link && \ - $(LN_S) $$target $$link; \ + rm -f "$$link" && \ + $(LN_S) "$$target" "$$link"; \ done +# The installation of translated man pages abuses Automake internals +# by calling "install-man" with redefined dist_man_MANS and man_MANS. +# If this breaks some day, don't blame Automake developers. install-data-hook: - cd $(DESTDIR)$(mandir)/man1 && \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ target=`echo xz | sed '$(transform)'` && \ - for name in $(xzlinks); do \ - link=`echo $$name | sed '$(transform)'` && \ - rm -f $$link.1 && \ - $(LN_S) $$target.1 $$link.1; \ + for lang in . $$languages; do \ + man="$(top_srcdir)/po4a/man/$$lang/xz.1" ; \ + if test -f "$$man"; then \ + $(MAKE) dist_man_MANS="$$man" man_MANS= \ + mandir="$(mandir)/$$lang" install-man; \ + fi; \ + man1dir="$(DESTDIR)$(mandir)/$$lang/man1" && \ + if test -f "$$man1dir/$$target.1"; then ( \ + cd "$$man1dir" && \ + for name in $(xzlinks); do \ + link=`echo $$name | sed '$(transform)'` && \ + rm -f "$$link.1" && \ + $(LN_S) "$$target.1" "$$link.1"; \ + done \ + ); fi; \ done uninstall-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ for name in $(xzlinks); do \ link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \ - rm -f $$link; \ + rm -f "$$link"; \ done - cd $(DESTDIR)$(mandir)/man1 && \ - for name in $(xzlinks); do \ - link=`echo $$name | sed '$(transform)'` && \ - rm -f $$link.1; \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ + for lang in . $$languages; do \ + for name in xz $(xzlinks); do \ + name=`echo $$name | sed '$(transform)'` && \ + rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$name.1"; \ + done; \ done diff --git a/src/xzdec/Makefile.am b/src/xzdec/Makefile.am index 5ff8e373..90f1e922 100644 --- a/src/xzdec/Makefile.am +++ b/src/xzdec/Makefile.am @@ -50,6 +50,7 @@ lzmadec_LDADD = $(xzdec_LDADD) bin_PROGRAMS = +lzmadecmanlink = if COND_XZDEC bin_PROGRAMS += xzdec @@ -60,23 +61,51 @@ if COND_LZMADEC bin_PROGRAMS += lzmadec # Create the symlink lzmadec.1->xzdec.1 only if xzdec.1 was installed. -# This is better than creating a dangling symlink, especially -# because creating the link may fail due to the directory being missing. -# -# FIXME: The correct solution would be to install xzdec.1 as lzmadec.1 -# but I don't know what is the sane way to do it and since this is a bit -# unusual situation anyway, it's not that important. +# This is better than creating a dangling symlink. The correct solution +# would be to install xzdec.1 as lzmadec.1 but this code is already too +# complicated so I won't do it. Installing only lzmadec is a bit unusual +# situation anyway so it's not that important. if COND_XZDEC +lzmadecmanlink += lzmadec +endif +endif + +if COND_XZDEC +# The installation of translated man pages abuses Automake internals +# by calling "install-man" with redefined dist_man_MANS and man_MANS. +# If this breaks some day, don't blame Automake developers. install-data-hook: - cd $(DESTDIR)$(mandir)/man1 && \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ target=`echo xzdec | sed '$(transform)'` && \ link=`echo lzmadec | sed '$(transform)'` && \ - rm -f $$link.1 && \ - $(LN_S) $$target.1 $$link.1 + for lang in . $$languages; do \ + man="$(top_srcdir)/po4a/man/$$lang/xzdec.1" ; \ + if test -f "$$man"; then \ + $(MAKE) dist_man_MANS="$$man" man_MANS= \ + mandir="$(mandir)/$$lang" install-man; \ + fi; \ + man1dir="$(DESTDIR)$(mandir)/$$lang/man1" && \ + if test -f "$$man1dir/$$target.1"; then \ + if test -n "$(lzmadecmanlink)"; then ( \ + cd "$$man1dir" && \ + rm -f "$$link.1" && \ + $(LN_S) "$$target.1" "$$link.1" \ + ); fi; \ + fi; \ + done uninstall-hook: - cd $(DESTDIR)$(mandir)/man1 && \ - link=`echo lzmadec | sed '$(transform)'` && \ - rm -f $$link.1 -endif + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ + for lang in . $$languages; do \ + for name in xzdec $(lzmadecmanlink); do \ + name=`echo $$name | sed '$(transform)'` && \ + rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$name.1"; \ + done; \ + done endif -- cgit v1.2.3 From 1e5e08d86534aec7ca957982c7f6e90203c19e9f Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 14 Feb 2020 20:42:06 +0200 Subject: Translations: Add German translation of the man pages. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks to Mario Blättermann. --- po4a/de.po | 5532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po4a/po4a.conf | 2 +- 2 files changed, 5533 insertions(+), 1 deletion(-) create mode 100644 po4a/de.po diff --git a/po4a/de.po b/po4a/de.po new file mode 100644 index 00000000..3cf73756 --- /dev/null +++ b/po4a/de.po @@ -0,0 +1,5532 @@ +# XZ Utils man pages German translation +# This file is put in the public domain. +# +# Mario Blättermann , 2015, 2019-2020. +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.5\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2020-02-14 18:34+0200\n" +"PO-Revision-Date: 2020-02-14 18:40+0100\n" +"Last-Translator: Mario Blättermann \n" +"Language-Team: German \n" +"Language: de\n" +"X-Bugs: Report translation errors to the Language-Team address.\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-Generator: Lokalize 19.12.2\n" + +#. type: TH +#: ../src/xz/xz.1:8 +#, no-wrap +msgid "XZ" +msgstr "XZ" + +#. type: TH +#: ../src/xz/xz.1:8 +#, no-wrap +msgid "2020-02-01" +msgstr "1. Februar 2020" + +#. 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 +#, no-wrap +msgid "Tukaani" +msgstr "Tukaani" + +#. 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 +#, no-wrap +msgid "XZ Utils" +msgstr "XZ-Dienstprogramme" + +#. 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 +#, no-wrap +msgid "NAME" +msgstr "BEZEICHNUNG" + +#. type: Plain text +#: ../src/xz/xz.1:12 +msgid "" +"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma " +"files" +msgstr "" +"xz, unxz, xzcat, lzma, unlzma, lzcat - .xz- und .lzma-Dateien komprimieren " +"oder dekomprimieren" + +#. 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 +#, no-wrap +msgid "SYNOPSIS" +msgstr "ÜBERSICHT" + +#. type: Plain text +#: ../src/xz/xz.1:17 +msgid "B [I] [I]" +msgstr "B [I] [I]" + +#. type: SH +#: ../src/xz/xz.1:18 +#, no-wrap +msgid "COMMAND ALIASES" +msgstr "BEFEHLSALIASE" + +#. type: Plain text +#: ../src/xz/xz.1:22 +msgid "B is equivalent to B." +msgstr "B ist gleichbedeutend mit B." + +#. type: Plain text +#: ../src/xz/xz.1:26 +msgid "B is equivalent to B." +msgstr "B ist gleichbedeutend mit B." + +#. type: Plain text +#: ../src/xz/xz.1:30 +msgid "B is equivalent to B." +msgstr "B ist gleichbedeutend mit B." + +#. type: Plain text +#: ../src/xz/xz.1:34 +msgid "B is equivalent to B." +msgstr "B ist gleichbedeutend mit B." + +#. type: Plain text +#: ../src/xz/xz.1:38 +msgid "B is equivalent to B." +msgstr "" +"B ist gleichbedeutend mit B." + +#. type: Plain text +#: ../src/xz/xz.1:50 +msgid "" +"When writing scripts that need to decompress files, it is recommended to " +"always use the name B with appropriate arguments (B or B) " +"instead of the names B and B." +msgstr "" +"Wenn Sie Skripte schreiben, die Dateien dekomprimieren, sollten Sie stets den " +"Namen B mit den entsprechenden Argumenten (B oder B) " +"anstelle der Namen B und B verwenden." + +#. 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 +#, no-wrap +msgid "DESCRIPTION" +msgstr "BESCHREIBUNG" + +#. type: Plain text +#: ../src/xz/xz.1:65 +msgid "" +"B is a general-purpose data compression tool with command line syntax " +"similar to B(1) and B(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." +msgstr "" +"B ist ein Allzweckwerkzeug zur Datenkompression, dessen " +"Befehlszeilensyntax denen von B(1) und B(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." + +#. type: Plain text +#: ../src/xz/xz.1:87 +msgid "" +"B compresses or decompresses each I according to the selected " +"operation mode. If no I are given or I is B<->, B reads " +"from standard input and writes the processed data to standard output. B " +"will refuse (display an error and skip the I) to write compressed data " +"to standard output if it is a terminal. Similarly, B will refuse to read " +"compressed data from standard input if it is a terminal." +msgstr "" +"B komprimiert oder dekomprimierte jede I entsprechend des " +"gewählten Vorgangsmodus. Falls entweder B<-> oder keine Datei angegeben ist, " +"liest B aus der Standardeingabe und leitet die verarbeiteten Dateien in " +"die Standardausgabe. Wenn die Standardausgabe kein Terminal ist, verweigert " +"B das Schreiben komprimierter Daten in die Standardausgabe. Dabei wird " +"eine Fehlermeldung angezeigt und die I übersprungen. Ebenso verweigert " +"B das Lesen komprimierter Daten aus der Standardeingabe, wenn diese ein " +"Terminal ist." + +#. type: Plain text +#: ../src/xz/xz.1:97 +msgid "" +"Unless B<--stdout> is specified, I other than B<-> are written to a " +"new file whose name is derived from the source I name:" +msgstr "" +"I, die nicht als B<-> angegeben sind, werden in eine neue Datei " +"geschrieben, deren Name aus den Namen der Quell-I abgeleitet wird " +"(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 +#, no-wrap +msgid "\\(bu" +msgstr "\\(bu" + +#. type: Plain text +#: ../src/xz/xz.1:103 +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 "" +"Bei der Kompression wird das Suffix des Formats der Zieldatei (B<.xz> oder B<." +"lzma>) an den Namen der Quelldatei angehängt und so der Name der Zieldatei " +"gebildet." + +#. type: Plain text +#: ../src/xz/xz.1:117 +msgid "" +"When decompressing, the B<.xz> or B<.lzma> suffix is removed from the " +"filename to get the target filename. B 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 die " +"Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>." + +#. type: Plain text +#: ../src/xz/xz.1:121 +msgid "" +"If the target file already exists, an error is displayed and the I is " +"skipped." +msgstr "" +"Wenn die Zieldatei bereits existiert, wird eine Fehlermeldung angezeigt und " +"die I übersprungen." + +#. type: Plain text +#: ../src/xz/xz.1:127 +msgid "" +"Unless writing to standard output, B will display a warning and skip the " +"I if any of the following applies:" +msgstr "" +"Außer beim Schreiben in die Standardausgabe zeigt B eine Warnung an und " +"überspringt die I, wenn eine der folgenden Bedingungen zutreffend ist:" + +#. type: Plain text +#: ../src/xz/xz.1:132 +msgid "" +"I is not a regular file. Symbolic links are not followed, and thus " +"they are not considered to be regular files." +msgstr "" +"Die I ist keine reguläre Datei. Symbolischen Verknüpfungen wird nicht " +"gefolgt und daher nicht zu den regulären Dateien gezählt." + +#. type: Plain text +#: ../src/xz/xz.1:135 +msgid "I has more than one hard link." +msgstr "Die I hat mehr als eine harte Verknüpfung." + +#. type: Plain text +#: ../src/xz/xz.1:138 +msgid "I has setuid, setgid, or sticky bit set." +msgstr "" +"Für die I ist das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt." + +#. type: Plain text +#: ../src/xz/xz.1:154 +msgid "" +"The operation mode is set to compress and the I already has a suffix of " +"the target file format (B<.xz> or B<.txz> when compressing to the B<.xz> " +"format, and B<.lzma> or B<.tlz> when compressing to the B<.lzma> format)." +msgstr "" +"Der Aktionsmodus wird auf Kompression gesetzt und die I hat bereits " +"das Suffix des Zieldateiformats (B<.xz> oder B<.txz> beim Komprimieren in das " +"B<.xz>-Format und B<.lzma> oder B<.tlz> beim Komprimieren in das B<.lzma>-" +"Format)." + +#. type: Plain text +#: ../src/xz/xz.1:163 +msgid "" +"The operation mode is set to decompress and the I doesn't have a suffix " +"of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, or B<.tlz>)." +msgstr "" +"Der Aktionsmodus wird auf Dekompression gesetzt und die I hat nicht " +"das Suffix eines der unterstützten Zieldateiformate (B<.xz>, B<.txz>, B<." +"lzma> oder B<.tlz>)." + +#. type: Plain text +#: ../src/xz/xz.1:178 +msgid "" +"After successfully compressing or decompressing the I, B copies the " +"owner, group, permissions, access time, and modification time from the source " +"I to the target file. If copying the group fails, the permissions are " +"modified so that the target file doesn't become accessible to users who " +"didn't have permission to access the source I. B doesn't support " +"copying other metadata like access control lists or extended attributes yet." +msgstr "" +"Nach erfolgreicher Kompression oder Dekompression der I kopiert B " +"Eigentümer, Gruppe, Zugriffsrechte, Zugriffszeit und Änderungszeit aus der " +"Ursprungs-I in die Zieldatei. Sollte das Kopieren der Gruppe " +"fehlschlagen, werden die Zugriffsrechte so angepasst, dass jenen Benutzern " +"der Zugriff auf die Zieldatei verwehrt bleibt, die auch keinen Zugriff auf " +"die Ursprungs-I hatten. Das Kopieren anderer Metadaten wie " +"Zugriffssteuerlisten oder erweiterter Attribute wird von B noch nicht " +"unterstützt." + +#. type: Plain text +#: ../src/xz/xz.1:187 +msgid "" +"Once the target file has been successfully closed, the source I is " +"removed unless B<--keep> was specified. The source I is never removed " +"if the output is written to standard output." +msgstr "" +"Sobald die Zieldatei erfolgreich geschlossen wurde, wird die Ursprungs-" +"I entfernt. Dies wird durch die Option B<--keep> verhindert. Die " +"Ursprungs-I wird niemals entfernt, wenn die Ausgabe in die " +"Standardausgabe geschrieben wird." + +#. type: Plain text +#: ../src/xz/xz.1:199 +msgid "" +"Sending B or B to the B process makes it print progress " +"information to standard error. This has only limited use since when standard " +"error is a terminal, using B<--verbose> will display an automatically " +"updating progress indicator." +msgstr "" +"Durch Senden der Signale B oder B an den B-Prozess " +"werden Fortschrittsinformationen in den Fehlerkanal der Standardausgabe " +"geleitet. Dies ist nur eingeschränkt hilfreich, wenn die " +"Standardfehlerausgabe ein Terminal ist. Mittels B<--verbose> wird ein " +"automatisch aktualisierter Fortschrittsanzeiger angezeigt." + +#. type: SS +#: ../src/xz/xz.1:200 +#, no-wrap +msgid "Memory usage" +msgstr "Speicherbedarf" + +#. type: Plain text +#: ../src/xz/xz.1:216 +msgid "" +"The memory usage of B 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 decompressor. " +"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 B currently requires 65\\ MiB of memory. Still, it " +"is possible to have B<.xz> files that require several 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. 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 der Datei erforderlich war. Beispielsweise benötigt die " +"Dekompression einer Datei, die mit B komprimiert wurde, gegenwärtig " +"etwa 65\\ MiB Speicher. Es ist jedoch auch möglich, dass B<.xz>-Dateien " +"mehrere Gigabyte an Speicher zur Dekompression erfordern." + +# cripple → lahmlegen...? War mir hier zu sehr Straßenslang. +#. type: Plain text +#: ../src/xz/xz.1:228 +msgid "" +"Especially users of older systems may find the possibility of very large " +"memory usage annoying. To prevent uncomfortable surprises, B 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(1) to limit " +"virtual memory tends to cripple B(2))." +msgstr "" +"Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr großer " +"Speicherbedarf ärgerlich sein. Um unangenehme Überraschungen zu vermeiden, " +"verfügt B über eine eingebaute Begrenzung des Speicherbedarfs, die " +"allerdings in der Voreinstellung deaktiviert ist. Zwar verfügen einige " +"Betriebssysteme über eingebaute Möglichkeiten zur prozessabhängigen " +"Speicherbegrenzung, doch diese sind zu unflexibel (zum Beispiel kann " +"B(1) beim Begrenzen des virtuellen Speichers B(2) " +"beeinträchtigen)." + +#. type: Plain text +#: ../src/xz/xz.1:248 +msgid "" +"The memory usage limiter can be enabled with the command line option B<--" +"memlimit=>I. Often it is more convenient to enable the limiter by " +"default by setting the environment variable B, e.g.\\& " +"B. It is possible to set the limits " +"separately for compression and decompression by using B<--memlimit-" +"compress=>I and B<--memlimit-decompress=>I. Using these two " +"options outside B is rarely useful because a single run of B " +"cannot do both compression and decompression and B<--memlimit=>I (or " +"B<-M> I) is shorter to type on the command line." +msgstr "" +"Die Begrenzung des Speicherbedarfs kann mit der Befehlszeilenoption B<--" +"memlimit=>I aktiviert werden. Oft ist es jedoch bequemer, die " +"Begrenzung durch Setzen der Umgebungsvariable B standardmäßig zu " +"aktivieren, zum Beispiel B. Die Begrenzungen " +"können getrennt für Kompression und Dekompression mittels B<--memlimit-" +"compress=>I und B<--memlimit-decompress=>I festgelegt " +"werden. Die Verwendung einer solchen Option außerhalb der Variable " +"B ist kaum sinnvoll, da B in einer einzelnen Aktion nicht " +"gleichzeitig Kompression und Dekompression ausführen kann und B<--" +"memlimit=>I (oder B<-M> I) lässt sich einfacher in " +"der Befehlszeile eingeben." + +#. type: Plain text +#: ../src/xz/xz.1:265 +msgid "" +"If the specified memory usage limit is exceeded when decompressing, B " +"will display an error and decompressing the file will fail. If the limit is " +"exceeded when compressing, B will try to scale the settings down so that " +"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, the settings will be scaled down only a little, not " +"all the way down to B." +msgstr "" +"Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten " +"wird, schlägt der Vorgang fehl und B zeigt eine Fehlermeldung an. Wird " +"die Begrenzung bei der Kompression überschritten, dann versucht B die " +"Einstellungen entsprechend anzupassen, außer wenn B<--format=raw> oder B<--no-" +"adjust> angegeben ist. Auf diese Weise schlägt die Aktion nicht fehl, es sei " +"denn, die Begrenzung wurde sehr niedrig angesetzt. Die Anpassung der " +"Einstellungen wird schrittweise vorgenommen, allerdings entsprechen die " +"Schritte nicht den Voreinstellungen der Kompressionsstufen. Das bedeutet, " +"wenn beispielsweise die Begrenzung nur geringfügig unter den Anforderungen " +"für B liegt, werden auch die Einstellungen nur wenig angepasst und " +"nicht vollständig herunter zu den Werten für B" + +#. type: SS +#: ../src/xz/xz.1:266 +#, 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 +msgid "" +"It is possible to concatenate B<.xz> files as is. B will decompress such " +"files as if they were a single B<.xz> file." +msgstr "" +"Es ist möglich, B<.xz>-Dateien direkt zu verketten. Solche Dateien werden von " +"B genauso dekomprimiert wie eine einzelne B<.xz>-Datei." + +#. type: Plain text +#: ../src/xz/xz.1:283 +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." +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 " +"bestehen und deren Größe muss ein Vielfaches von vier Byte sein. Dies kann " +"zum Beispiel dann vorteilhaft sein, wenn die B<.xz>-Datei auf einem " +"Datenträger gespeichert wird, dessen Dateisystem die Dateigrößen in 512-Byte-" +"Blöcken speichert." + +#. type: Plain text +#: ../src/xz/xz.1:287 +msgid "" +"Concatenation and padding are not allowed with B<.lzma> files or raw streams." +msgstr "" +"Verkettung und Auffüllung sind für B<.lzma>-Dateien oder Rohdatenströme nicht " +"erlaubt." + +#. type: SH +#: ../src/xz/xz.1:288 ../src/xzdec/xzdec.1:61 +#, no-wrap +msgid "OPTIONS" +msgstr "OPTIONEN" + +#. type: SS +#: ../src/xz/xz.1:290 +#, no-wrap +msgid "Integer suffixes and special values" +msgstr "Ganzzahlige Suffixe und spezielle Werte" + +#. type: Plain text +#: ../src/xz/xz.1:294 +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 " +"the integer and the suffix." +msgstr "" +"An den meisten Stellen, wo ein ganzzahliges Argument akzeptiert wird, kann " +"ein optionales Suffix große Ganzzahlwerte einfacher darstellen. Zwischen " +"Ganzzahl und dem Suffix dürfen sich keine Leerzeichen befinden." + +#. type: TP +#: ../src/xz/xz.1:294 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:305 +msgid "" +"Multiply the integer by 1,024 (2^10). B, B, B, B, and B " +"are accepted as synonyms for B." +msgstr "" +"multipliziert die Ganzzahl mit 1.024 (2^10). B, B, B, B und " +"B werden als Synonyme für B akzeptiert." + +#. type: TP +#: ../src/xz/xz.1:305 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:315 +msgid "" +"Multiply the integer by 1,048,576 (2^20). B, B, B, and B are " +"accepted as synonyms for B." +msgstr "" +"multipliziert die Ganzzahl mit 1.048.576 (2^20). B, B, B und B " +"werden als Synonyme für B akzeptiert." + +#. type: TP +#: ../src/xz/xz.1:315 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:325 +msgid "" +"Multiply the integer by 1,073,741,824 (2^30). B, B, B, and B " +"are accepted as synonyms for B." +msgstr "" +"multipliziert die Ganzzahl mit 1.073.741.824 (2^30). B, B, B und " +"B werden als Synonyme für B akzeptiert." + +#. type: Plain text +#: ../src/xz/xz.1:330 +msgid "" +"The special value B can be used to indicate the maximum integer value " +"supported by the option." +msgstr "" +"Der spezielle Wert B kann dazu verwendet werden, um den von der " +"jeweiligen Option akzeptierten maximalen Ganzzahlwert anzugeben." + +#. type: SS +#: ../src/xz/xz.1:331 +#, no-wrap +msgid "Operation mode" +msgstr "Aktionsmodus" + +#. type: Plain text +#: ../src/xz/xz.1:334 +msgid "If multiple operation mode options are given, the last one takes effect." +msgstr "" +"Falls mehrere Aktionsmodi angegeben sind, wird der zuletzt angegebene " +"verwendet." + +#. type: TP +#: ../src/xz/xz.1:334 +#, no-wrap +msgid "B<-z>, B<--compress>" +msgstr "B<-z>, B<--compress>" + +#. type: Plain text +#: ../src/xz/xz.1:343 +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 " +"(for example, B implies B<--decompress>)." +msgstr "" +"Kompression. Dies ist der voreingestellte Aktionsmodus, sofern keiner " +"angegeben ist und auch kein bestimmter Modus aus dem Befehlsnamen abgeleitet " +"werden kann (der Befehl B impliziert zum Beispiel B<--decompress>)." + +#. type: TP +#: ../src/xz/xz.1:343 ../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 +msgid "Decompress." +msgstr "dekomprimpiert." + +#. type: TP +#: ../src/xz/xz.1:346 +#, no-wrap +msgid "B<-t>, B<--test>" +msgstr "B<-t>, B<--test>" + +#. type: Plain text +#: ../src/xz/xz.1:355 +msgid "" +"Test the integrity of compressed I. This option is equivalent to B<--" +"decompress --stdout> except that the decompressed data is discarded instead " +"of being written to standard output. No files are created or removed." +msgstr "" +"prüft die Integrität der komprimierten I. Diese Option ist " +"gleichbedeutend mit B<--decompress --stdout>, außer dass die dekomprimierten " +"Daten verworfen werden, anstatt sie in die Standardausgabe zu leiten. Es " +"werden keine Dateien erstellt oder entfernt." + +#. type: TP +#: ../src/xz/xz.1:355 +#, no-wrap +msgid "B<-l>, B<--list>" +msgstr "B<-l>, B<--list>" + +#. type: Plain text +#: ../src/xz/xz.1:364 +msgid "" +"Print information about compressed I. No uncompressed output 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." +msgstr "" +"gibt Informationen zu den komprimierten I aus. Es werden keine " +"unkomprimierten Dateien ausgegeben und keine Dateien angelegt oder entfernt. " +"Im Listenmodus kann das Programm keine komprimierten Daten aus der " +"Standardeingabe oder anderen nicht durchsuchbaren Quellen lesen." + +#. type: Plain text +#: ../src/xz/xz.1:379 +msgid "" +"The default listing shows basic information about I, 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 may be convenient if the terminal isn't wide enough." +msgstr "" +"Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den " +"I an, zeilenweise pro Datei. Detailliertere Informationen erhalten " +"Sie mit der Option B<--verbose>. Wenn Sie diese Option zweimal angeben, " +"werden noch ausführlichere Informationen ausgegeben. Das kann den Vorgang " +"allerdings deutlich verlangsamen, da die Ermittlung der zusätzlichen " +"Informationen zahlreiche Suchvorgänge erfordert. Die Breite der ausführlichen " +"Ausgabe ist breiter als 80 Zeichen, daher könnte die Weiterleitung in " +"beispielsweise\\& B sinnvoll sein, falls das Terminal nicht breit " +"genug ist." + +#. type: Plain text +#: ../src/xz/xz.1:386 +msgid "" +"The exact output may vary between B versions and different locales. For " +"machine-readable output, B<--robot --list> should be used." +msgstr "" +"Die exakte Ausgabe kann in verschiedenen B-Versionen und " +"Spracheinstellungen unterschiedlich sein. Wenn eine maschinell auswertbare " +"Ausgabe gewünscht ist, dann sollten Sie B<--robot --list> verwenden." + +#. type: SS +#: ../src/xz/xz.1:387 +#, no-wrap +msgid "Operation modifiers" +msgstr "Aktionsattribute" + +#. type: TP +#: ../src/xz/xz.1:388 ../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 +msgid "Don't delete the input files." +msgstr "verhindert das Löschen der Eingabedateien." + +#. type: TP +#: ../src/xz/xz.1:391 +#, no-wrap +msgid "B<-f>, B<--force>" +msgstr "B<-f>, B<--force>" + +#. type: Plain text +#: ../src/xz/xz.1:394 +msgid "This option has several effects:" +msgstr "Diese Option hat verschiedene Auswirkungen:" + +#. type: Plain text +#: ../src/xz/xz.1:398 +msgid "" +"If the target file already exists, delete it before compressing or " +"decompressing." +msgstr "" +"Wenn die Zieldatei bereits existiert, wird diese vor der Kompression oder " +"Dekompression gelöscht." + +#. type: Plain text +#: ../src/xz/xz.1:405 +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 " +"set. The setuid, setgid, and sticky bits are not copied to the target file." +msgstr "" +"Die Kompression oder Dekompression wird 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." + +#. type: Plain text +#: ../src/xz/xz.1:430 +msgid "" +"When used with B<--decompress> B<--stdout> and B cannot recognize the " +"type of the source file, copy the source file as is to standard output. This " +"allows B B<--force> to be used like B(1) for files that have not " +"been compressed with B. Note that in future, B might support new " +"compressed file formats, which may make B decompress more types of files " +"instead of copying them as is to standard output. B<--format=>I can " +"be used to restrict B to decompress only a single file format." +msgstr "" +"Wenn es zusammen mit B<--decompress> und B<--stdout> verwendet wird und B " +"den Typ der Quelldatei nicht ermitteln kann, wird die Quelldatei unverändert " +"in die Standardausgabe kopiert. Dadurch kann B B<--force> für Dateien, " +"die nicht mit B komprimiert wurden, wie B(1) verwendet werden. " +"Zukünftig könnte B neue Dateikompressionsformate unterstützen, wodurch " +"B mehr Dateitypen dekomprimieren kann, anstatt sie unverändert in die " +"Standardausgabe zu kopieren. Mit der Option B<--format=>I können Sie " +"B anweisen, nur ein einzelnes Dateiformat zu dekomprimieren." + +#. type: TP +#: ../src/xz/xz.1:431 ../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 +msgid "" +"Write the compressed or decompressed data to standard output instead of a " +"file. This implies B<--keep>." +msgstr "" +"schreibt die komprimierten oder dekomprimierten Daten in die Standardausgabe " +"anstatt in eine Datei. Dies impliziert B<--keep>." + +#. type: TP +#: ../src/xz/xz.1:437 +#, no-wrap +msgid "B<--single-stream>" +msgstr "B<--single-stream>" + +#. type: Plain text +#: ../src/xz/xz.1:446 +msgid "" +"Decompress only the first B<.xz> stream, and silently ignore possible " +"remaining input data following the stream. Normally such trailing garbage " +"makes B display an error." +msgstr "" +"dekomprimiert nur den ersten B<.xz>-Datenstrom und ignoriert stillschweigend " +"weitere Eingabedaten, die möglicherweise dem Datenstrom folgen. Normalerweise " +"führt solcher anhängender Datenmüll dazu, dass B eine Fehlermeldung " +"ausgibt." + +#. type: Plain text +#: ../src/xz/xz.1:455 +msgid "" +"B never decompresses more than one stream from B<.lzma> files or raw " +"streams, but this option still makes B ignore the possible trailing data " +"after the B<.lzma> file or raw stream." +msgstr "" +"B dekomprimiert niemals mehr als einen Datenstrom aus B<.lzma>-Dateien " +"oder Rohdatenströmen, aber dennoch wird durch diese Option möglicherweise " +"vorhandener Datenmüll nach der B<.lzma>-Datei oder dem Rohdatenstrom " +"ignoriert." + +#. type: Plain text +#: ../src/xz/xz.1:460 +msgid "" +"This option has no effect if the operation mode is not B<--decompress> or B<--" +"test>." +msgstr "" +"Diese Option ist wirkungslos, wenn der Aktionsmodus nicht B<--decompress> " +"oder B<--test> ist." + +#. type: TP +#: ../src/xz/xz.1:460 +#, no-wrap +msgid "B<--no-sparse>" +msgstr "B<--no-sparse>" + +#. type: Plain text +#: ../src/xz/xz.1:472 +msgid "" +"Disable creation of sparse files. By default, if decompressing into a " +"regular file, B tries to make the file sparse if the decompressed 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." +msgstr "" +"verhindert die Erzeugung von Sparse-Dateien. In der Voreinstellung versucht " +"B, bei der Dekompression in eine reguläre Datei eine Sparse-Datei zu " +"erzeugen, wenn die dekomprimierten Daten lange Abfolgen von binären Nullen " +"enthalten. Dies funktioniert auch beim Schreiben in die Standardausgabe, " +"sofern diese in eine reguläre Datei weitergeleitet wird und bestimmte " +"Zusatzbedingungen erfüllt sind, die die Aktion absichern. Die Erzeugung von " +"Sparse-Dateien kann Plattenplatz sparen und beschleunigt die Dekompression " +"durch Verringerung der Ein-/Ausgaben der Platte." + +#. type: TP +#: ../src/xz/xz.1:472 +#, 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 +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 " +"already has the suffix I<.suf>, a warning is displayed and the file is " +"skipped." +msgstr "" +"verwendet I<.suf> bei der Dekompression anstelle von B<.xz> oder B<.lzma> als " +"Suffix für die Zieldatei. Falls nicht in die Standardausgabe geschrieben wird " +"und die Quelldatei bereits das Suffix I<.suf> hat, wird eine Warnung " +"angezeigt und die Datei übersprungen." + +#. type: Plain text +#: ../src/xz/xz.1:497 +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 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." + +#. type: Plain text +#: ../src/xz/xz.1:503 +msgid "" +"When compressing or decompressing raw streams (B<--format=raw>), the suffix " +"must always be specified unless writing to standard output, because there is " +"no default suffix for raw streams." +msgstr "" +"Beim Komprimieren oder Dekomprimieren von Rohdatenströmen mit B<--format=raw> " +"muss das Suffix stets angegeben werden, außer wenn die Ausgabe in die " +"Standardausgabe erfolgt. Der Grund dafür ist, dass es kein vorgegebenes " +"Suffix für Rohdatenströme gibt." + +#. type: TP +#: ../src/xz/xz.1:503 +#, no-wrap +msgid "B<--files>[B<=>I]" +msgstr "B<--files>[B<=>I]" + +#. type: Plain text +#: ../src/xz/xz.1:517 +msgid "" +"Read the filenames to process from I; if I is omitted, filenames " +"are read from standard input. Filenames must be terminated with the newline " +"character. A dash (B<->) is taken as a regular filename; it doesn't mean " +"standard input. If filenames are given also as command line arguments, they " +"are processed before the filenames read from I." +msgstr "" +"liest die zu verarbeitenden Dateinamen aus I. Falls keine I " +"angegeben ist, werden die Dateinamen aus der Standardeingabe gelesen. " +"Dateinamen müssen mit einem Zeilenumbruch beendet werden. Ein Bindestrich (B<-" +">) wird als regulärer Dateiname angesehen und nicht als Standardeingabe " +"interpretiert. Falls Dateinamen außerdem als Befehlszeilenargumente angegeben " +"sind, werden diese vor den Dateinamen aus der I verarbeitet." + +#. type: TP +#: ../src/xz/xz.1:517 +#, no-wrap +msgid "B<--files0>[B<=>I]" +msgstr "B<--files0>[B<=>I]" + +#. type: Plain text +#: ../src/xz/xz.1:521 +msgid "" +"This is identical to B<--files>[B<=>I] except that each filename must " +"be terminated with the null character." +msgstr "" +"Dies ist gleichbedeutend mit B<--files>[B<=>I], außer dass jeder " +"Dateiname mit einem Null-Zeichen abgeschlossen werden muss." + +#. type: SS +#: ../src/xz/xz.1:522 +#, no-wrap +msgid "Basic file format and compression options" +msgstr "Grundlegende Dateiformat- und Kompressionsoptionen" + +#. type: TP +#: ../src/xz/xz.1:523 +#, no-wrap +msgid "B<-F> I, B<--format=>I" +msgstr "B<-F> I, B<--format=>I" + +#. type: Plain text +#: ../src/xz/xz.1:528 +msgid "Specify the file I to compress or decompress:" +msgstr "" +"gibt das I der zu komprimierenden oder dekomprimierenden Datei an:" + +#. type: TP +#: ../src/xz/xz.1:529 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:541 +msgid "" +"This is the default. When compressing, B is equivalent to B. When " +"decompressing, the format of the input file is automatically detected. Note " +"that raw streams (created with B<--format=raw>) cannot be auto-detected." +msgstr "" +"Dies ist die Voreinstellung. Bei der Kompression ist B gleichbedeutend " +"mit B. Bei der Dekompression wird das Format der Eingabedatei automatisch " +"erkannt. Beachten Sie, dass Rohdatenströme, wie sie mit B<--format=raw> " +"erzeugt werden, nicht automatisch erkannt werden können." + +#. type: TP +#: ../src/xz/xz.1:541 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:548 +msgid "" +"Compress to the B<.xz> file format, or accept only B<.xz> files when " +"decompressing." +msgstr "" +"Die Kompression erfolgt in das B<.xz>-Dateiformat oder akzeptiert nur B<.xz>-" +"Dateien bei der Dekompression." + +#. type: TP +#: ../src/xz/xz.1:548 +#, no-wrap +msgid "B, B" +msgstr "B, B" + +#. type: Plain text +#: ../src/xz/xz.1:558 +msgid "" +"Compress to the legacy B<.lzma> file format, or accept only B<.lzma> files " +"when decompressing. The alternative name B is provided for backwards " +"compatibility with LZMA Utils." +msgstr "" +"Die Kompression erfolgt in das veraltete B<.lzma>-Dateiformat oder akzeptiert " +"nur B<.lzma>-Dateien bei der Dekompression. Der alternative Name B " +"dient der Abwärtskompatibilität zu den LZMA-Dienstprogrammen." + +#. type: TP +#: ../src/xz/xz.1:558 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:566 +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> and " +"explicitly specify the filter chain, which normally would have been stored in " +"the container headers." +msgstr "" +"Komprimiert oder dekomprimiert einen Rohdatenstrom (ohne Header). Diese " +"Option ist nur für fortgeschrittene Benutzer bestimmt. Zum Dekodieren von " +"Rohdatenströmen müssen Sie die Option B<--format=raw> verwenden und die " +"Filterkette ausdrücklich angeben, die normalerweise in den (hier fehlenden) " +"Container-Headern gespeichert worden wäre." + +#. type: TP +#: ../src/xz/xz.1:567 +#, no-wrap +msgid "B<-C> I, B<--check=>I" +msgstr "B<-C> I, B<--check=>I" + +#. type: Plain text +#: ../src/xz/xz.1:582 +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 " +"only when compressing into the B<.xz> format; the B<.lzma> format doesn't " +"support integrity checks. The integrity check (if any) is verified when the " +"B<.xz> file is decompressed." +msgstr "" +"gibt den Typ der Integritätsprüfung an. Die Prüfsumme wird aus den " +"unkomprimierten Daten berechnet und in der B<.xz>-Datei gespeichert. Diese " +"Option wird nur bei der Kompression in das B<.xz>-Format angewendet, da das " +"B<.lzma>-Format keine Integritätsprüfungen unterstützt. Die eigentliche " +"Integritätsprüfung erfolgt (falls möglich), wenn die B<.xz>-Datei " +"dekomprimiert wird." + +#. type: Plain text +#: ../src/xz/xz.1:586 +msgid "Supported I types:" +msgstr "Folgende Typen von I werden unterstützt:" + +#. type: TP +#: ../src/xz/xz.1:587 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:593 +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 anyway." +msgstr "" +"führt keine Integritätsprüfung aus. Dies ist eine eher schlechte Idee. " +"Dennoch kann es nützlich sein, wenn die Integrität der Daten auf andere Weise " +"sichergestellt werden kann." + +#. type: TP +#: ../src/xz/xz.1:593 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:596 +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 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:601 +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 " +"speed difference is negligible." +msgstr "" +"berechnet die CRC64-Prüfsumme anhand des Polynoms aus ECMA-182. Dies ist die " +"Voreinstellung, da beschädigte Dateien etwas besser als mit CRC32 erkannt " +"werden und die Geschwindigkeitsdifferenz unerheblich ist." + +#. type: TP +#: ../src/xz/xz.1:601 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:605 +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 +msgid "" +"Integrity of the B<.xz> headers is always verified with CRC32. It is not " +"possible to change or disable it." +msgstr "" +"Die Integrität der B<.xz>-Header wird immer mit CRC32 geprüft. Es ist nicht " +"möglich, dies zu ändern oder zu deaktivieren." + +#. type: TP +#: ../src/xz/xz.1:611 +#, no-wrap +msgid "B<--ignore-check>" +msgstr "B<--ignore-check>" + +#. type: Plain text +#: ../src/xz/xz.1:617 +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 "" +"verifiziert die Integritätsprüfsumme der komprimierten Daten bei der " +"Dekompression nicht. Die CRC32-Werte in den B<.xz>-Headern werden weiterhin " +"normal verifiziert." + +#. type: Plain text +#: ../src/xz/xz.1:620 +msgid "" +"B Possible " +"reasons to use this option:" +msgstr "" +"B Mögliche " +"Gründe, diese Option zu verwenden:" + +#. type: Plain text +#: ../src/xz/xz.1:623 +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 +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 option " +"for this purpose unless the file integrity is verified externally in some " +"other way." +msgstr "" +"Erhöhung der Geschwindigkeit bei der Dekompression. Dies macht sich meist mit " +"SHA-256 bemerkbar, oder mit Dateien, die extrem stark komprimiert sind. Wir " +"empfehlen, diese Option nicht für diesen Zweck zu verwenden, es sei denn, die " +"Integrität der Datei wird extern auf andere Weise überprüft." + +#. type: TP +#: ../src/xz/xz.1:630 +#, no-wrap +msgid "B<-0> ... B<-9>" +msgstr "B<-0> … B<-9>" + +#. type: Plain text +#: ../src/xz/xz.1:639 +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 chain " +"was already specified, setting a compression preset level clears the custom " +"filter chain." +msgstr "" +"wählt eine der voreingestellten Kompressionsstufen, standardmäßig B<-6>. Wenn " +"mehrere Voreinstellungsstufen angegeben sind, ist nur die zuletzt angegebene " +"wirksam. Falls bereits eine benutzerdefinierte Filterkette angegeben wurde, " +"wird diese durch die Festlegung der Voreinstellung geleert." + +#. type: Plain text +#: ../src/xz/xz.1:654 +msgid "" +"The differences between the presets are more significant than with " +"B(1) and B(1). The selected compression settings determine the " +"memory requirements of the decompressor, thus using a too high preset level " +"might make it painful to decompress the file on an old system with little " +"RAM. Specifically, B " +"like it often is with B(1) and B(1)." +msgstr "" +"Die Unterschiede zwischen den Voreinstellungsstufen sind deutlicher als bei " +"B(1) und B(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 B zu verwenden, wie dies häufig mit B(1) und B(1) " +"gehandhabt wird." + +#. type: TP +#: ../src/xz/xz.1:655 +#, no-wrap +msgid "B<-0> ... B<-3>" +msgstr "B<-0> … B<-3>" + +#. type: Plain text +#: ../src/xz/xz.1:667 +msgid "" +"These are somewhat fast presets. B<-0> is sometimes faster than B " +"while compressing much better. The higher ones often have speed comparable " +"to B(1) with comparable or better compression ratio, although the " +"results depend a lot on the type of data being compressed." +msgstr "" +"Diese Voreinstellungen sind recht schnell. B<-0> ist manchmal schneller als " +"B, wobei aber die Kompression wesentlich besser ist. Die schnelleren " +"Voreinstellungen sind im Hinblick auf die Geschwindigkeit mit B(1) " +"vergleichbar , mit einem ähnlichen oder besseren Kompressionsverhältnis, " +"wobei das Ergebnis aber stark vom Typ der zu komprimierenden Daten abhängig " +"ist." + +#. type: TP +#: ../src/xz/xz.1:667 +#, no-wrap +msgid "B<-4> ... B<-6>" +msgstr "B<-4> … B<-6>" + +#. type: Plain text +#: ../src/xz/xz.1:681 +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>.)" +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>)." + +#. type: TP +#: ../src/xz/xz.1:681 +#, no-wrap +msgid "B<-7 ... -9>" +msgstr "B<-7 … -9>" + +#. type: Plain text +#: ../src/xz/xz.1:688 +msgid "" +"These are like B<-6> but with higher compressor and decompressor memory " +"requirements. These are useful only when compressing files bigger than 8\\ " +"MiB, 16\\ MiB, and 32\\ MiB, respectively." +msgstr "" +"Ähnlich wie B<-6>, aber mit einem höheren Speicherbedarf für die Kompression " +"und Dekompression. Sie sind nur nützlich, wenn Dateien komprimiert werden " +"sollen, die größer als 8\\ MiB, 16\\ MiB beziehungsweise 32\\ MiB sind." + +#. type: Plain text +#: ../src/xz/xz.1:696 +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 " +"the compression, the faster the decompression will usually be. This also " +"means that the amount of uncompressed output produced per second can vary a " +"lot." +msgstr "" +"Auf der gleichen Hardware ist die Dekompressionsgeschwindigkeit ein nahezu " +"konstanter Wert in Bytes komprimierter Daten pro Sekunde. Anders ausgedrückt: " +"Je besser die Kompression, umso schneller wird üblicherweise die " +"Dekompression sein. Das bedeutet auch, dass die Menge der pro Sekunde " +"ausgegebenen unkomprimierten Daten stark variieren kann." + +#. type: Plain text +#: ../src/xz/xz.1:698 +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 +#, no-wrap +msgid "Preset" +msgstr "Voreinstellung" + +#. type: tbl table +#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 +#, no-wrap +msgid "DictSize" +msgstr "DictGröße" + +#. type: tbl table +#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623 +#, no-wrap +msgid "CompCPU" +msgstr "KompCPU" + +#. type: tbl table +#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 +#, no-wrap +msgid "CompMem" +msgstr "KompSpeicher" + +#. type: tbl table +#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 +#, no-wrap +msgid "DecMem" +msgstr "DekSpeicher" + +#. type: tbl table +#: ../src/xz/xz.1:706 ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 +#: ../src/xz/xz.1:2624 +#, no-wrap +msgid "-0" +msgstr "-0" + +#. type: tbl table +#: ../src/xz/xz.1:706 ../src/xz/xz.1:787 ../src/xz/xz.1:2234 +#, no-wrap +msgid "256 KiB" +msgstr "256 KiB" + +#. type: tbl table +#: ../src/xz/xz.1:706 ../src/xz/xz.1:2624 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "-1" +msgstr "-1" + +#. type: tbl table +#: ../src/xz/xz.1:707 ../src/xz/xz.1:1582 ../src/xz/xz.1:2625 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "-2" +msgstr "-2" + +#. type: tbl table +#: ../src/xz/xz.1:708 ../src/xz/xz.1:1585 ../src/xz/xz.1:2626 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "4 MiB" +msgstr "4 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:709 ../src/xz/xz.1:2627 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "8 MiB" +msgstr "8 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:711 ../src/xz/xz.1:2629 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "6" +msgstr "6" + +#. type: tbl table +#: ../src/xz/xz.1:713 ../src/xz/xz.1:2241 ../src/xz/xz.1:2266 +#, 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 +#, 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 +#, 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 +#, no-wrap +msgid "-8" +msgstr "-8" + +#. type: tbl table +#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2267 +#, no-wrap +msgid "370 MiB" +msgstr "370 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 +#, 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 +#, no-wrap +msgid "-9" +msgstr "-9" + +#. type: tbl table +#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2243 +#, 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 +#, no-wrap +msgid "674 MiB" +msgstr "674 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 +#, no-wrap +msgid "65 MiB" +msgstr "65 MiB" + +#. type: Plain text +#: ../src/xz/xz.1:721 +msgid "Column descriptions:" +msgstr "Spaltenbeschreibungen:" + +#. type: Plain text +#: ../src/xz/xz.1:733 +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 " +"good to avoid using the presets B<-7> ... B<-9> when there's no real need 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." + +#. type: Plain text +#: ../src/xz/xz.1:742 +msgid "" +"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 B<-6> ... B<-9>, higher levels still tend to be a " +"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>." + +#. type: Plain text +#: ../src/xz/xz.1:750 +msgid "" +"CompMem contains the compressor memory requirements in the single-threaded " +"mode. It may vary slightly between B 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-" +"Modus. Dieser kann zwischen den B-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 +msgid "" +"DecMem contains the decompressor memory requirements. That is, the " +"compression settings determine the memory requirements of the decompressor. " +"The exact decompressor memory usage is slightly more than the LZMA2 " +"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, " +"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 +#, no-wrap +msgid "B<-e>, B<--extreme>" +msgstr "B<-e>, B<--extreme>" + +#. type: Plain text +#: ../src/xz/xz.1:767 +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 " +"luck this can also make it worse. Decompressor memory usage is not affected, " +"but compressor memory usage increases a little at preset levels B<-0> ... " +"B<-3>." +msgstr "" +"verwendet eine langsamere Variante der gewählten Kompressions-" +"Voreinstellungsstufe (B<-0> … B<-9>), um hoffentlich ein etwas 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 B<-0> bis B<-3> geringfügig an." + +#. type: Plain text +#: ../src/xz/xz.1:779 +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 " +"B<-4e> and B<-6e>, respectively. That way no two presets are identical." +msgstr "" +"Da es zwei Voreinstellungen mit den Wörterbuchgrößen 4\\ MiB und 8\\ MiB " +"gibt, verwenden die Voreinstellungsstufen B<-3e> und B<-5e> etwas schnellere " +"Einstellungen (niedrigere KompCPU) als B<-4e> beziehungsweise B<-6e>. Auf " +"diese Weise sind zwei Voreinstellungen nie identisch." + +#. type: tbl table +#: ../src/xz/xz.1:787 +#, 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 +#, no-wrap +msgid "8" +msgstr "8" + +#. type: tbl table +#: ../src/xz/xz.1:788 +#, no-wrap +msgid "-1e" +msgstr "-1e" + +#. type: tbl table +#: ../src/xz/xz.1:788 +#, no-wrap +msgid "13 MiB" +msgstr "13 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:789 +#, no-wrap +msgid "-2e" +msgstr "-2e" + +#. type: tbl table +#: ../src/xz/xz.1:789 +#, no-wrap +msgid "25 MiB" +msgstr "25 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:790 +#, no-wrap +msgid "-3e" +msgstr "-3e" + +#. type: tbl table +#: ../src/xz/xz.1:790 ../src/xz/xz.1:792 ../src/xz/xz.1:2631 +#, no-wrap +msgid "7" +msgstr "7" + +#. type: tbl table +#: ../src/xz/xz.1:791 +#, no-wrap +msgid "-4e" +msgstr "-4e" + +#. type: tbl table +#: ../src/xz/xz.1:792 ../src/xz/xz.1:2631 +#, no-wrap +msgid "-5e" +msgstr "-5e" + +#. type: tbl table +#: ../src/xz/xz.1:793 ../src/xz/xz.1:2632 +#, no-wrap +msgid "-6e" +msgstr "-6e" + +#. type: tbl table +#: ../src/xz/xz.1:794 +#, no-wrap +msgid "-7e" +msgstr "-7e" + +#. type: tbl table +#: ../src/xz/xz.1:795 +#, no-wrap +msgid "-8e" +msgstr "-8e" + +#. type: tbl table +#: ../src/xz/xz.1:796 +#, no-wrap +msgid "-9e" +msgstr "-9e" + +#. type: Plain text +#: ../src/xz/xz.1:808 +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 " +"B<-6e>." +msgstr "" +"Zum Beispiel gibt es insgesamt vier Voreinstellungen, die ein 8\\ MiB großes " +"Wörterbuch verwenden, deren Reihenfolge von der schnellsten zur langsamsten " +"B<-5>, B<-6>, B<-5e> und B<-6e> ist." + +#. type: TP +#: ../src/xz/xz.1:808 +#, no-wrap +msgid "B<--fast>" +msgstr "B<--fast>" + +#. type: TP +#: ../src/xz/xz.1:811 +#, no-wrap +msgid "B<--best>" +msgstr "B<--best>" + +#. type: Plain text +#: ../src/xz/xz.1:822 +msgid "" +"These are somewhat misleading aliases for B<-0> and B<-9>, respectively. " +"These are provided only for backwards compatibility with LZMA Utils. Avoid " +"using these options." +msgstr "" +"sind etwas irreführende Aliase für B<-0> beziehungsweise B<-9>. Sie werden " +"nur zwecks Abwärtskompatibilität zu den LZMA-Dienstprogrammen bereitgestellt. " +"Sie sollten diese Optionen besser nicht verwenden." + +#. type: TP +#: ../src/xz/xz.1:822 +#, no-wrap +msgid "B<--block-size=>I" +msgstr "B<--block-size=>I" + +# CHECK multi-threading and makes limited random-access +#. type: Plain text +#: ../src/xz/xz.1:835 +msgid "" +"When compressing to the B<.xz> format, split the input data into blocks of " +"I bytes. The blocks are compressed independently from each other, " +"which helps with multi-threading and makes limited random-access " +"decompression possible. This option is typically used to override the " +"default block size in multi-threaded mode, but this option can be used in " +"single-threaded mode too." +msgstr "" +"teilt beim Komprimieren in das B<.xz>-Format die Eingabedaten in Blöcke der " +"angegebenen I in Byte. Die Blöcke werden unabhängig voneinander " +"komprimiert, was dem Multi-Threading entgegen kommt und Zufallszugriffe bei " +"der Dekompression begrenzt. Diese Option wird typischerweise eingesetzt, um " +"die vorgegebene Blockgröße im Multi-Thread-Modus außer Kraft zu setzen, aber " +"sie kann auch im Einzel-Thread-Modus angewendet werden." + +#. type: Plain text +#: ../src/xz/xz.1:853 +msgid "" +"In multi-threaded mode about three times I bytes will be allocated in " +"each thread for buffering input and output. The default I 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 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 will " +"use for multi-threaded decompression." +msgstr "" +"Im Multi-Thread-Modus wird etwa die dreifache I in jedem Thread zur " +"Pufferung der Ein- und Ausgabe belegt. Die vorgegebene I ist das " +"Dreifache der Größe des LZMA2-Wörterbuchs oder 1 MiB, je nachdem, was mehr " +"ist. Typischerweise ist das Zwei- bis Vierfache der Größe des LZMA2-" +"Wörterbuchs oder wenigstens 1 MB ein guter Wert. Eine I, die geringer " +"ist als die des LZMA2-Wörterbuchs, ist Speicherverschwendung, weil dann der " +"LZMA2-Wörterbuchpuffer niemals vollständig genutzt werden würde. Die Größe " +"der Blöcke wird in den Block-Headern gespeichert, die von einer zukünftigen " +"Version von B für eine Multi-Thread-Dekompression genutzt wird." + +#. type: Plain text +#: ../src/xz/xz.1:862 +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 " +"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 B won't be able decompress the files in " +"multi-threaded mode." +msgstr "" +"Im Einzel-Thread-Modus werden die Blöcke standardmäßig nicht geteilt. Das " +"Setzen dieser Option wirkt sich nicht auf den Speicherbedarf aus. In den " +"Block-Headern werden keine Größeninformationen gespeichert, daher werden im " +"Einzel-Thread-Modus erzeugte Dateien nicht zu den im Multi-Thread-Modus " +"erzeugten Dateien identisch sein. Das Fehlen der Größeninformation bedingt " +"auch, dass eine zukünftige Version von B nicht in der Lage sein wird, die " +"Dateien im Multi-Thread-Modus zu dekomprimieren." + +#. type: TP +#: ../src/xz/xz.1:862 +#, no-wrap +msgid "B<--block-list=>I" +msgstr "B<--block-list=>I" + +#. type: Plain text +#: ../src/xz/xz.1:868 +msgid "" +"When compressing to the B<.xz> format, start a new block after the given " +"intervals of uncompressed data." +msgstr "" +"beginnt bei der Kompression in das B<.xz>-Format nach den angegebenen " +"Intervallen unkomprimierter Daten einen neuen Block." + +#. type: Plain text +#: ../src/xz/xz.1:874 +msgid "" +"The uncompressed I of the blocks are specified as a comma-separated " +"list. Omitting a size (two or more consecutive commas) is a shorthand to use " +"the size of the previous block." +msgstr "" +"Die unkomprimierte I der Blöcke wird in einer durch Kommata getrennten " +"Liste angegeben. Auslassen einer Größe (zwei oder mehr aufeinander folgende " +"Kommata) ist ein Kürzel dafür, die Größe des vorherigen Blocks zu verwenden." + +#. type: Plain text +#: ../src/xz/xz.1:884 +msgid "" +"If the input file is bigger than the sum of I, the last value in " +"I is repeated until the end of the file. A special value of B<0> may " +"be used as the last value to indicate that the rest of the file should be " +"encoded as a single block." +msgstr "" +"Falls die Eingabedatei größer ist als die Summe der I, dann wird der " +"letzte in I angegebene Wert bis zum Ende der Datei wiederholt. Mit dem " +"speziellen Wert B<0> können Sie angeben, dass der Rest der Datei als " +"einzelner Block kodiert werden soll." + +# FIXME encoder → compressor +#. type: Plain text +#: ../src/xz/xz.1:899 +msgid "" +"If one specifies I that exceed the encoder's block size (either the " +"default value in threaded mode or the value specified with B<--block-" +"size=>I), the encoder will create additional blocks while keeping the " +"boundaries specified in I. For example, if one specifies B<--block-" +"size=10MiB> B<--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." +msgstr "" +"Falls Sie I angeben, welche die Blockgröße des Encoders übersteigen " +"(entweder den Vorgabewert im Thread-Modus oder den mit B<--block-" +"size=>I angegebenen Wert), wird der Encoder zusätzliche Blöcke " +"erzeugen, wobei die in den I angegebenen Grenzen eingehalten werden. " +"Wenn Sie zum Beispiel B<--block-size=10MiB> B<--block-" +"list=5MiB,10MiB,8MiB,12MiB,24MiB> angeben und die Eingabedatei 80 MiB groß " +"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 +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 " +"won't be identical to that of the multi-threaded mode." +msgstr "" +"Im Multi-Thread-Modus werden die Blockgrößen in den Block-Headern " +"gespeichert. Dies geschieht im Einzel-Thread-Modus nicht, daher wird die " +"kodierte Ausgabe zu der im Multi-Thread-Modus nicht identisch sein." + +#. type: TP +#: ../src/xz/xz.1:905 +#, no-wrap +msgid "B<--flush-timeout=>I" +msgstr "B<--flush-timeout=>I" + +#. type: Plain text +#: ../src/xz/xz.1:922 +msgid "" +"When compressing, if more than I 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 B is used to compress data that is " +"streamed over a network. Small I values make the data available at " +"the receiving end with a small delay, but large I values give better " +"compression ratio." +msgstr "" +"löscht bei der Kompression die ausstehenden Daten aus dem Encoder und macht " +"sie im Ausgabedatenstrom verfügbar, wenn mehr als die angegebene I in " +"Millisekunden (als positive Ganzzahl) seit dem vorherigen Löschen vergangen " +"ist und das Lesen weiterer Eingaben blockieren würde. Dies kann nützlich " +"sein, wenn B zum Komprimieren von über das Netzwerk eingehenden Daten " +"verwendet wird. Kleine I-Werte machen die Daten unmittelbar nach dem " +"Empfang nach einer kurzen Verzögerung verfügbar, während große I-Werte " +"ein besseres Kompressionsverhältnis bewirken." + +#. type: Plain text +#: ../src/xz/xz.1:930 +msgid "" +"This feature is disabled by default. If this option is specified more than " +"once, the last one takes effect. The special I value of B<0> can be " +"used to explicitly disable this feature." +msgstr "" +"Dieses Funktionsmerkmal ist standardmäßig deaktiviert. Wenn diese Option " +"mehrfach angegeben wird, ist die zuletzt angegebene wirksam. Für die Angabe " +"der I kann der spezielle Wert B<0> verwendet werden, um dieses " +"Funktionsmerkmal explizit zu deaktivieren." + +#. type: Plain text +#: ../src/xz/xz.1:932 +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 +msgid "" +"B Currently B is unsuitable for " +"decompressing the stream in real time due to how B does buffering." +msgstr "" +"B Gegenwärtig ist B " +"aufgrund der Art und Weise, wie B puffert, für Dekompression in Echtzeit " +"ungeeignet." + +#. type: TP +#: ../src/xz/xz.1:940 +#, no-wrap +msgid "B<--memlimit-compress=>I" +msgstr "B<--memlimit-compress=>I" + +#. type: Plain text +#: ../src/xz/xz.1:945 +msgid "" +"Set a memory usage limit for compression. If this option is specified " +"multiple times, the last one takes effect." +msgstr "" +"legt eine Grenze für die Speichernutzung bei der Kompression fest. Wenn diese " +"Option mehrmals angegeben wird, ist die zuletzt angegebene wirksam." + +#. type: Plain text +#: ../src/xz/xz.1:960 +msgid "" +"If the compression settings exceed the I, B 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 will exit with " +"exit status 1." +msgstr "" +"Falls die Kompressionseinstellungen die I überschreiten, passt B " +"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 mit dem " +"Exit-Status 1 beendet." + +#. type: Plain text +#: ../src/xz/xz.1:964 +msgid "The I can be specified in multiple ways:" +msgstr "Die I kann auf verschiedene Arten angegeben werden:" + +# FIXME integer suffix +#. type: Plain text +#: ../src/xz/xz.1:974 +msgid "" +"The I can be an absolute value in bytes. Using an integer suffix like " +"B can be useful. Example: B<--memlimit-compress=80MiB>" +msgstr "" +"Die I kann ein absoluter Wert in Byte sein. Ein Suffix wie B " +"kann dabei hilfreich sein. Beispiel: B<--memlimit-compress=80MiB>." + +#. type: Plain text +#: ../src/xz/xz.1:986 +msgid "" +"The I can be specified as a percentage of total physical memory " +"(RAM). This can be useful especially when setting the B " +"environment variable in a shell initialization script that is shared between " +"different computers. That way the limit is automatically bigger on systems " +"with more memory. Example: B<--memlimit-compress=70%>" +msgstr "" +"Die I kann als Prozentsatz des physischen Gesamtspeichers (RAM) " +"angegeben werden. Dies ist insbesondere nützlich, wenn in einem Shell-" +"Initialisierungsskript, das mehrere unterschiedliche Rechner gemeinsam " +"verwenden, die Umgebungsvariable B gesetzt ist. Auf diese Weise " +"ist die Grenze auf Systemen mit mehr Speicher höher. Beispiel: B<--memlimit-" +"compress=70%>" + +#. type: Plain text +#: ../src/xz/xz.1:1006 +msgid "" +"The I can be reset back to its default value by setting it to B<0>. " +"This is currently equivalent to setting the I to B (no memory " +"usage limit). Once multithreading support has been implemented, there may be " +"a difference between B<0> and B for the multithreaded case, so it is " +"recommended to use B<0> instead of B until the details have been decided." +msgstr "" +"Mit B<0> kann die I auf den Standardwert zurückgesetzt werden. Dies " +"ist gegenwärtig gleichbedeutend mit dem Setzen der I auf B " +"(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 geben, daher wird empfohlen, B<0> anstelle von B zu " +"verwenden, bis die Einzelheiten hierzu geklärt sind." + +#. type: Plain text +#: ../src/xz/xz.1:1026 +msgid "" +"For 32-bit B there is a special case: if the I would be over " +"B<4020\\ MiB>, the I is set to B<4020\\ MiB>. (The values B<0> and " +"B 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." +msgstr "" +"Für die 32-Bit-Version von B gibt es einen Spezialfall: Falls die Grenze " +"über B<4020\\ MiB> liegt, wird die I auf B<4020\\ MiB> gesetzt (die " +"Werte B<0> und B 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." + +#. type: Plain text +#: ../src/xz/xz.1:1029 +msgid "See also the section B." +msgstr "Siehe auch den Abschnitt B." + +#. type: TP +#: ../src/xz/xz.1:1029 +#, no-wrap +msgid "B<--memlimit-decompress=>I" +msgstr "B<--memlimit-decompress=>I" + +#. type: Plain text +#: ../src/xz/xz.1:1043 +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, B " +"will display an error and decompressing the file will fail. See B<--memlimit-" +"compress=>I for possible ways to specify the I." +msgstr "" +"legt eine Begrenzung des Speicherverbrauchs für die Dekompression fest. Dies " +"beeinflusst auch den Modus B<--list>. Falls die Aktion nicht ausführbar ist, " +"ohne die I zu überschreiten, gibt B eine Fehlermeldung aus und " +"die Dekompression wird fehlschlagen. Siehe B<--memlimit-compress=>I " +"zu möglichen Wegen, die I anzugeben." + +#. type: TP +#: ../src/xz/xz.1:1043 +#, no-wrap +msgid "B<-M> I, B<--memlimit=>I, B<--memory=>I" +msgstr "B<-M> I, B<--memlimit=>I, B<--memory=>I" + +#. type: Plain text +#: ../src/xz/xz.1:1047 +msgid "" +"This is equivalent to specifying B<--memlimit-compress=>IB<--memlimit-" +"decompress=>I." +msgstr "" +"Dies ist gleichbedeutend mit B<--memlimit-compress=>IB<--memlimit-" +"decompress=>I." + +#. type: TP +#: ../src/xz/xz.1:1047 +#, no-wrap +msgid "B<--no-adjust>" +msgstr "B<--no-adjust>" + +#. type: Plain text +#: ../src/xz/xz.1:1055 +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." + +#. type: TP +#: ../src/xz/xz.1:1055 +#, no-wrap +msgid "B<-T> I, B<--threads=>I" +msgstr "B<-T> I, B<--threads=>I" + +#. type: Plain text +#: ../src/xz/xz.1:1070 +msgid "" +"Specify the number of worker threads to use. Setting I to a special " +"value B<0> makes B use as many threads as there are CPU cores on the " +"system. The actual number of threads can be less than I 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 " +"auf einen speziellen Wert B<0> setzen, verwendet B so viele Threads, wie " +"Prozessorkerne im System verfügbar sind. Die tatsächliche Anzahl kann " +"geringer sein als die angegebenen I, 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 +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-" +"size=>I option." +msgstr "" +"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 B<--block-" +"size=>I außer Kraft gesetzt werden." + +#. type: Plain text +#: ../src/xz/xz.1:1085 +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 is " +"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 " +"verwendet wird." + +#. type: SS +#: ../src/xz/xz.1:1086 ../src/xz/xz.1:2603 +#, no-wrap +msgid "Custom compressor filter chains" +msgstr "Benutzerdefinierte Filterketten für die Kompression" + +#. type: Plain text +#: ../src/xz/xz.1:1097 +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." +msgstr "" +"Eine benutzerdefinierte Filterkette ermöglicht die Angabe detaillierter " +"Kompressionseinstellungen, anstatt von den Voreinstellungen auszugehen. Wenn " +"eine benutzerdefinierte Filterkette angegeben wird, werden die vorher in der " +"Befehlszeile angegebenen Voreinstellungsoptionen (B<-0> … B<-9> und B<--" +"extreme>) außer Kraft gesetzt. Wenn eine Voreinstellungsoption nach einer " +"oder mehreren benutzerdefinierten Filterkettenoptionen angegeben wird, dann " +"wird die neue Voreinstellung wirksam und die zuvor angegebenen " +"Filterkettenoptionen werden außer Kraft gesetzt." + +#. type: Plain text +#: ../src/xz/xz.1:1104 +msgid "" +"A filter chain is comparable to piping on the command line. When " +"compressing, the uncompressed input goes to the first filter, whose output " +"goes to the next filter (if any). The output of the last filter gets written " +"to the compressed file. The maximum number of filters in the chain is four, " +"but typically a filter chain has only one or two filters." +msgstr "" +"Eine Filterkette ist mit dem Piping (der Weiterleitung) in der Befehlszeile " +"vergleichbar. Bei der Kompression gelangt die unkomprimierte Eingabe in den " +"ersten Filter, dessen Ausgabe wiederum in den zweiten Filter geleitet wird " +"(sofern ein solcher vorhanden ist). Die Ausgabe des letzten Filters wird in " +"die komprimierte Datei geschrieben. In einer Filterkette sind maximal vier " +"Filter zulässig, aber typischerweise besteht eine Filterkette nur aus einem " +"oder zwei Filtern." + +#. type: Plain text +#: ../src/xz/xz.1:1112 +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-" +"last filter, and some work in any position in the chain. Depending on the " +"filter, this limitation is either inherent to the filter design or exists to " +"prevent security issues." +msgstr "" +"Bei vielen Filtern ist die Positionierung in der Filterkette eingeschränkt: " +"Einige Filter sind nur als letzte in der Kette verwendbar, einige können " +"nicht als letzte Filter gesetzt werden, und andere funktionieren an " +"beliebiger Stelle. Abhängig von dem Filter ist diese Beschränkung entweder " +"auf das Design des Filters selbst zurückzuführen oder ist aus " +"Sicherheitsgründen vorhanden." + +#. type: Plain text +#: ../src/xz/xz.1:1120 +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 " +"options is significant! When decoding raw streams (B<--format=raw>), the " +"filter chain is specified in the same order as it was specified when " +"compressing." +msgstr "" +"Eine benutzerdefinierte Filterkette wird durch eine oder mehrere " +"Filteroptionen in der Reihenfolge angegeben, in der sie in der Filterkette " +"wirksam werden sollen. Daher ist die Reihenfolge der Filteroptionen von " +"signifikanter Bedeutung! Beim Dekodieren von Rohdatenströmen (B<--" +"format=raw>) wird die Filterkette in der gleichen Reihenfolge angegeben wie " +"bei der Kompression." + +#. type: Plain text +#: ../src/xz/xz.1:1129 +msgid "" +"Filters take filter-specific I as a comma-separated list. Extra " +"commas in I are ignored. Every option has a default value, so you " +"need to specify only those you want to change." +msgstr "" +"Filter akzeptieren filterspezifische I in einer durch Kommata " +"getrennten Liste. Zusätzliche Kommata in den I werden ignoriert. " +"Jede Option hat einen Standardwert, daher brauchen Sie nur jene anzugeben, " +"die Sie ändern wollen." + +#. type: Plain text +#: ../src/xz/xz.1:1138 +msgid "" +"To see the whole filter chain and I, use B (that is, use B<--" +"verbose> twice). This works also for viewing the filter chain options used " +"by presets." +msgstr "" +"Um die gesamte Filterkette und die I anzuzeigen, rufen Sie B auf (was gleichbedeutend mit der zweimaligen Angabe von B<--verbose> " +"ist). Dies funktioniert auch zum Betrachten der von den Voreinstellungen " +"verwendeten Filterkettenoptionen." + +#. type: TP +#: ../src/xz/xz.1:1138 +#, no-wrap +msgid "B<--lzma1>[B<=>I]" +msgstr "B<--lzma1>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1141 +#, no-wrap +msgid "B<--lzma2>[B<=>I]" +msgstr "B<--lzma2>[B<=>I]" + +#. type: Plain text +#: ../src/xz/xz.1:1146 +msgid "" +"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used " +"only as the last filter in the chain." +msgstr "" +"fügt LZMA1- oder LZMA2-Filter zur Filterkette hinzu. Diese Filter können nur " +"als letzte Filter in der Kette verwendet werden." + +#. type: Plain text +#: ../src/xz/xz.1:1158 +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 version " +"of LZMA1 to fix some practical issues of LZMA1. The B<.xz> format uses LZMA2 " +"and doesn't support LZMA1 at all. Compression speed and ratios of LZMA1 and " +"LZMA2 are practically the same." +msgstr "" +"LZMA1 ist ein veralteter Filter, welcher nur wegen des veralteten B<.lzma>-" +"Dateiformats unterstützt wird, welches nur LZMA1 unterstützt. LZMA2 ist eine " +"aktualisierte Version von LZMA1, welche einige praktische Probleme von LZMA1 " +"behebt. Das B<.xz>-Format verwendet LZMA2 und unterstützt LZMA1 gar nicht. " +"Kompressionsgeschwindigkeit und -verhältnis sind bei LZMA1 und LZMA2 " +"praktisch gleich." + +#. type: Plain text +#: ../src/xz/xz.1:1161 +msgid "LZMA1 and LZMA2 share the same set of I:" +msgstr "LZMA1 und LZMA2 haben die gleichen I:" + +#. type: TP +#: ../src/xz/xz.1:1162 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1186 +msgid "" +"Reset all LZMA1 or LZMA2 I to I. I 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, which matches B<--" +"extreme>. If no B is specified, the default values of LZMA1 or LZMA2 " +"I are taken from the preset B<6>." +msgstr "" +"setzt alle LZMA1- oder LZMA2-I auf die I zurück. " +"Diese I wird in Form einer Ganzzahl angegeben, der ein aus " +"einem einzelnen Buchstaben bestehender Voreinstellungsmodifikator folgen " +"kann. Die Ganzzahl kann B<0> bis B<9> sein, entsprechend den " +"Befehlszeilenoptionen B<-0> … B<-9>. Gegenwärtig ist B der einzige " +"unterstützte Modifikator, was B<--extreme> entspricht. Wenn keine " +"B angegeben ist, werden die Standardwerte der LZMA1- oder " +"LZMA2-I der Voreinstellung B<6> entnommen." + +#. type: TP +#: ../src/xz/xz.1:1186 +#, no-wrap +msgid "BI" +msgstr "BI" + +# FIXME Dezimaltrenner in 1.5 GB +#. type: Plain text +#: ../src/xz/xz.1:1201 +msgid "" +"Dictionary (history buffer) I indicates how many bytes of the recently " +"processed uncompressed data is kept in memory. The algorithm tries to find " +"repeating byte sequences (matches) in the uncompressed data, and replace them " +"with references to the data currently in the dictionary. The bigger the " +"dictionary, the higher is the chance to find a match. Thus, increasing " +"dictionary I usually improves compression ratio, but a dictionary " +"bigger than the uncompressed file is waste of memory." +msgstr "" +"Die I des Wörterbuchs (Chronikpuffers) gibt an, wie viel Byte der " +"kürzlich verarbeiteten unkomprimierten Daten im Speicher behalten werden " +"sollen. Der Algorithmus versucht, sich wiederholende Byte-Abfolgen " +"(Übereinstimmungen) in den unkomprimierten Daten zu finden und diese durch " +"Referenzen zu den Daten zu ersetzen, die sich gegenwärtig im Wörterbuch " +"befinden. Je größer das Wörterbuch, umso größer ist die Chance, eine " +"Übereinstimmung zu finden. Daher bewirkt eine Erhöhung der I des " +"Wörterbuchs üblicherweise ein besseres Kompressionsverhältnis, aber ein " +"Wörterbuch, das größer ist als die unkomprimierte Datei, wäre " +"Speicherverschwendung." + +#. type: Plain text +#: ../src/xz/xz.1:1210 +msgid "" +"Typical dictionary I is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ " +"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The " +"decompressor already supports dictionaries up to one byte less than 4\\ GiB, " +"which is the maximum for the LZMA1 and LZMA2 stream formats." +msgstr "" +"Typische Wörterbuch-I liegen im Bereich von 64\\ KiB bis 64\\ MiB. " +"Das Minimum ist 4\\ KiB. Das Maximum für die Kompression ist gegenwärtig " +"1.5\\ GiB (1536\\ MiB). Bei der Dekompression wird bereits eine " +"Wörterbuchgröße bis zu 4\\ GiB minus 1 Byte unterstützt, welche das Maximum " +"für die LZMA1- und LZMA2-Datenstromformate ist." + +#. type: Plain text +#: ../src/xz/xz.1:1237 +msgid "" +"Dictionary I and match finder (I) together determine the memory " +"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary I " +"is required for decompressing that was used when compressing, thus the memory " +"usage of the decoder is determined by the dictionary size used when " +"compressing. The B<.xz> headers store the dictionary I either as " +"2^I or 2^I + 2^(I-1), so these I are somewhat preferred for " +"compression. Other I will get rounded up when stored in the B<.xz> " +"headers." +msgstr "" +"Die I des Wörterbuchs und der Übereinstimmungsfinder (I<Üf>) bestimmen " +"zusammen den Speicherverbrauch des LZMA1- oder LZMA2-Kodierers. Bei der " +"Dekompression ist ein Wörterbuch der gleichen I (oder ein noch " +"größeres) wie bei der Kompression erforderlich, daher wird der " +"Speicherverbrauch des Dekoders durch die Größe des bei der Kompression " +"verwendeten Wörterbuchs bestimmt. Die B<.xz>-Header speichern die I " +"des Wörterbuchs entweder als 2^I oder 2^I + 2^(I-1), so dass diese " +"I für die Kompression etwas bevorzugt werden. Andere I werden " +"beim Speichern in den B<.xz>-Headern aufgerundet." + +#. type: TP +#: ../src/xz/xz.1:1237 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1246 +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 and I must not " +"exceed 4." +msgstr "" +"gibt die Anzahl der literalen Kontextbits an. Das Minimum ist 0 und das " +"Maximum 4; der Standardwert ist 3. Außerdem darf die Summe von I und " +"I nicht größer als 4 sein." + +#. type: Plain text +#: ../src/xz/xz.1:1251 +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 "" +"Alle Bytes, die nicht als Übereinstimmungen kodiert werden können, werden als " +"Literale kodiert. Solche Literale sind einfache 8-bit-Bytes, die jeweils für " +"sich kodiert werden." + +#. type: Plain text +#: ../src/xz/xz.1:1265 +msgid "" +"The literal coding makes an assumption that the highest I 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 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-Bits des " +"zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum " +"Beispiel folgt in typischen englischsprachigen Texten auf einen " +"Großbuchstaben ein Kleinbuchstabe und auf einen Kleinbuchstaben üblicherweise " +"wieder ein Kleinbuchstabe. Im US-ASCII-Zeichensatz sind die höchsten drei " +"Bits 010 für Großbuchstaben und 011 für Kleinbuchstaben. Wenn I " +"mindestens 3 ist, kann die literale Kodierung diese Eigenschaft der " +"unkomprimierten Daten ausnutzen." + +#. type: Plain text +#: ../src/xz/xz.1:1274 +msgid "" +"The default value (3) is usually good. If you want maximum compression, test " +"B. Sometimes it helps a little, and sometimes it makes compression " +"worse. If it makes it worse, test e.g.\\& B too." +msgstr "" +"Der Vorgabewert (3) ist üblicherweise gut. Wenn Sie die maximale Kompression " +"erreichen wollen, versuchen Sie B. Manchmal hilft es ein wenig, doch " +"manchmal verschlechtert es die Kompression. Im letzteren Fall versuchen Sie " +"zum Beispiel auch\\& B." + +#. type: TP +#: ../src/xz/xz.1:1274 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1278 +msgid "" +"Specify the number of literal position bits. The minimum is 0 and the " +"maximum is 4; the default is 0." +msgstr "" +"gibt die Anzahl der literalen Positionsbits an. Das Minimum ist 0 und das " +"Maximum 4; die Vorgabe ist 0." + +#. type: Plain text +#: ../src/xz/xz.1:1285 +msgid "" +"I affects what kind of alignment in the uncompressed data is assumed when " +"encoding literals. See I below for more information about alignment." +msgstr "" +"I beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten beim " +"Kodieren von Literalen angenommen wird. Siehe I weiter unten für weitere " +"Informationen zur Ausrichtung." + +#. type: TP +#: ../src/xz/xz.1:1285 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1289 +msgid "" +"Specify the number of position bits. The minimum is 0 and the maximum is 4; " +"the default is 2." +msgstr "" +"legt die Anzahl der Positions-Bits fest. Das Minimum ist 0 und das Maximum 4; " +"Standard ist 2." + +#. type: Plain text +#: ../src/xz/xz.1:1296 +msgid "" +"I affects what kind of alignment in the uncompressed data is assumed in " +"general. The default means four-byte alignment (2^I=2^2=4), which is " +"often a good choice when there's no better guess." +msgstr "" +"I beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten " +"generell angenommen wird. Standardmäßig wird eine Vier-Byte-Ausrichtung " +"angenommen (2^I=2^2=4), was oft eine gute Wahl ist, wenn es keine bessere " +"Schätzung gibt." + +#. type: Plain text +#: ../src/xz/xz.1:1310 +msgid "" +"When the aligment is known, setting I 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 can improve compression slightly. For " +"UTF-16 text, B is a good choice. If the alignment is an odd number " +"like 3 bytes, B might be the best choice." +msgstr "" +"Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von I die " +"Dateigröße ein wenig verringern. Wenn Textdateien zum Beispiel eine Ein-Byte-" +"Ausrichtung haben (US-ASCII, ISO-8859-*, UTF-8), kann das Setzen von B " +"die Kompression etwas verbessern. Für UTF-16-Text ist B eine gute Wahl. " +"Wenn die Ausrichtung eine ungerade Zahl wie beispielsweise 3 Byte ist, könnte " +"B die beste Wahl sein." + +#. type: Plain text +#: ../src/xz/xz.1:1318 +msgid "" +"Even though the assumed alignment can be adjusted with I and I, LZMA1 " +"and LZMA2 still slightly favor 16-byte alignment. It might be worth taking " +"into account when designing file formats that are likely to be often " +"compressed with LZMA1 or LZMA2." +msgstr "" +"Obwohl die angenommene Ausrichtung mit I und I angepasst werden kann, " +"bevorzugen LZMA1 und LZMA2 noch etwas die 16-Byte-Ausrichtung. Das sollten " +"Sie vielleicht beim Design von Dateiformaten berücksichtigen, die " +"wahrscheinlich oft mit LZMA1 oder LZMA2 komprimiert werden." + +#. type: TP +#: ../src/xz/xz.1:1318 +#, no-wrap +msgid "BI" +msgstr "BI<Üf>" + +#. type: Plain text +#: ../src/xz/xz.1:1333 +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: 0 uses B, 1-3 " +"use B, and the rest use B." +msgstr "" +"Der Übereinstimmungsfinder hat einen großen Einfluss auf die Geschwindigkeit " +"des Kodierers, den Speicherbedarf und das Kompressionsverhältnis. " +"Üblicherweise sind auf Hash-Ketten basierende Übereinstimmungsfinder " +"schneller als jene, die mit Binärbäumen arbeiten. Die Vorgabe hängt von der " +"I ab: 0 verwendet B, 1-3 verwenden B und der " +"Rest verwendet B." + +#. type: Plain text +#: ../src/xz/xz.1:1339 +msgid "" +"The following match finders are supported. The memory usage formulas below " +"are rough approximations, which are closest to the reality when I is a " +"power of two." +msgstr "" +"Die folgenden Übereinstimmungsfinder werden unterstützt. Die Formeln zur " +"Ermittlung des Speicherverbrauchs sind grobe Schätzungen, die der Realität am " +"nächsten kommen, wenn I eine Zweierpotenz ist." + +#. type: TP +#: ../src/xz/xz.1:1340 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1343 +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 +msgid "Minimum value for I: 3" +msgstr "Minimalwert für I: 3" + +#. type: Plain text +#: ../src/xz/xz.1:1349 ../src/xz/xz.1:1368 ../src/xz/xz.1:1398 +#: ../src/xz/xz.1:1417 +msgid "Memory usage:" +msgstr "Speicherbedarf:" + +#. type: Plain text +#: ../src/xz/xz.1:1354 +msgid "I * 7.5 (if I E= 16 MiB);" +msgstr "I * 7,5 (falls I E= 16 MiB);" + +#. type: Plain text +#: ../src/xz/xz.1:1359 +msgid "I * 5.5 + 64 MiB (if I E 16 MiB)" +msgstr "I * 5,5 + 64 MiB (falls I E 16 MiB)" + +#. type: TP +#: ../src/xz/xz.1:1359 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1362 +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 +msgid "Minimum value for I: 4" +msgstr "Minimaler Wert für I: 4" + +#. type: Plain text +#: ../src/xz/xz.1:1373 +msgid "I * 7.5 (if I E= 32 MiB);" +msgstr "I * 7,5 (falls I E= 32 MiB ist);" + +#. type: Plain text +#: ../src/xz/xz.1:1378 +msgid "I * 6.5 (if I E 32 MiB)" +msgstr "I * 6,5 (falls I E 32 MiB ist)" + +#. type: TP +#: ../src/xz/xz.1:1378 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1381 +msgid "Binary Tree with 2-byte hashing" +msgstr "Binärbaum mit 2-Byte-Hashing" + +#. type: Plain text +#: ../src/xz/xz.1:1385 +msgid "Minimum value for I: 2" +msgstr "Minimaler Wert für I: 2" + +#. type: Plain text +#: ../src/xz/xz.1:1389 +msgid "Memory usage: I * 9.5" +msgstr "Speicherverbrauch: I * 9.5" + +#. type: TP +#: ../src/xz/xz.1:1389 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1392 +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 +msgid "I * 11.5 (if I E= 16 MiB);" +msgstr "I * 11,5 (falls I E= 16 MiB ist);" + +#. type: Plain text +#: ../src/xz/xz.1:1408 +msgid "I * 9.5 + 64 MiB (if I E 16 MiB)" +msgstr "I * 9,5 + 64 MiB (falls I E 16 MiB ist)" + +#. type: TP +#: ../src/xz/xz.1:1408 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1411 +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 +msgid "I * 11.5 (if I E= 32 MiB);" +msgstr "I * 11,5 (falls I E= 32 MiB ist);" + +#. type: Plain text +#: ../src/xz/xz.1:1427 +msgid "I * 10.5 (if I E 32 MiB)" +msgstr "I * 10,5 (falls I E 32 MiB ist)" + +#. type: TP +#: ../src/xz/xz.1:1428 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1449 +msgid "" +"Compression I specifies the method to analyze the data produced by the " +"match finder. Supported I are B and B. The default is " +"B for I 0-3 and B for I 4-9." +msgstr "" +"gibt die Methode zum Analysieren der vom Übereinstimmungsfinder gelieferten " +"Daten an. Als I werden B und B unterstützt. Die Vorgabe " +"ist B für die I 0-3 und B für die " +"I 4-9." + +#. type: Plain text +#: ../src/xz/xz.1:1458 +msgid "" +"Usually B is used with Hash Chain match finders and B with " +"Binary Tree match finders. This is also what the I do." +msgstr "" +"Üblicherweise wird B mit Hashketten-basierten Übereinstimmungsfindern " +"und B mit Binärbaum-basierten Übereinstimmungsfindern verwendet. So " +"machen es auch die I." + +#. type: TP +#: ../src/xz/xz.1:1458 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1465 +msgid "" +"Specify what is considered to be a nice length for a match. Once a match of " +"at least I bytes is found, the algorithm stops looking for possibly " +"better matches." +msgstr "" +"gibt an, was als annehmbarer Wert für eine Übereinstimmung angesehen werden " +"kann. Wenn eine Übereinstimmung gefunden wird, die mindestens diesen I-" +"Wert hat, sucht der Algorithmus nicht weiter nach besseren Übereinstimmungen." + +#. type: Plain text +#: ../src/xz/xz.1:1472 +msgid "" +"I can be 2-273 bytes. Higher values tend to give better compression " +"ratio at the expense of speed. The default depends on the I." +msgstr "" +"Der I-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 ab." + +#. type: TP +#: ../src/xz/xz.1:1472 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1482 +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 " +"I from I and I." +msgstr "" +"legt die maximale Suchtiefe im Übereinstimmungsfinder fest. Vorgegeben ist " +"der spezielle Wert 0, der den Kompressor veranlasst, einen annehmbaren Wert " +"für I aus I<Üf> und I-Wert zu bestimmen." + +#. type: Plain text +#: ../src/xz/xz.1:1493 +msgid "" +"Reasonable I for Hash Chains is 4-100 and 16-1000 for Binary Trees. " +"Using very high values for I can make the encoder extremely slow with " +"some files. Avoid setting the I over 1000 unless you are prepared to " +"interrupt the compression in case it is taking far too long." +msgstr "" +"Die angemessene I für Hash-Ketten ist 4-100 und 16-1000 für " +"Binärbäume. Hohe Werte für die I können den Kodierer bei einigen " +"Dateien extrem verlangsamen. Vermeiden Sie es, die I über einen Wert " +"von 100 zu setzen, oder stellen Sie sich darauf ein, die Kompression " +"abzubrechen, wenn sie zu lange dauert." + +#. type: Plain text +#: ../src/xz/xz.1:1504 +msgid "" +"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary " +"I. LZMA1 needs also I, I, and I." +msgstr "" +"Beim Dekodieren von Rohdatenströmen (B<--format=raw>) benötigt LZMA2 nur die " +"Wörterbuch-I. LZMA1 benötigt außerdem I, I und I." + +#. type: TP +#: ../src/xz/xz.1:1504 +#, no-wrap +msgid "B<--x86>[B<=>I]" +msgstr "B<--x86>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1507 +#, no-wrap +msgid "B<--powerpc>[B<=>I]" +msgstr "B<--powerpc>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1509 +#, no-wrap +msgid "B<--ia64>[B<=>I]" +msgstr "B<--ia64>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1511 +#, no-wrap +msgid "B<--arm>[B<=>I]" +msgstr "B<--arm>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1513 +#, no-wrap +msgid "B<--armthumb>[B<=>I]" +msgstr "B<--armthumb>[B<=>I]" + +#. type: TP +#: ../src/xz/xz.1:1515 +#, no-wrap +msgid "B<--sparc>[B<=>I]" +msgstr "B<--sparc>[B<=>I]" + +#. type: Plain text +#: ../src/xz/xz.1:1521 +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 "" +"fügt ein »Branch/Call/Jump«-(BCJ-)Filter zur Filterkette hinzu. Diese Filter " +"können nicht als letzter Filter in der Filterkette verwendet werden." + +#. type: Plain text +#: ../src/xz/xz.1:1533 +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." +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 " +"Redundanz erhöht, was LZMA2 dabei helfen kann, eine um 10 bis 15% kleinere 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." + +#. 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 +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 +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." +msgstr "" +"In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel " +"Objektdateien, statische Bibliotheken und Linux-Kernelmodule), sind die " +"Adressen in den Anweisungen mit Füllwerten gefüllt. Diese BCJ-Filter führen " +"dennoch die Adressumwandlung aus, wodurch die Kompression bei diesen Dateien " +"schlechter wird." + +#. type: Plain text +#: ../src/xz/xz.1:1565 +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." + +#. type: Plain text +#: ../src/xz/xz.1:1572 +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 +#. 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 +#, no-wrap +msgid "Filter" +msgstr "Filter" + +#. type: tbl table +#: ../src/xz/xz.1:1581 +#, no-wrap +msgid "Alignment" +msgstr "Ausrichtung" + +#. type: tbl table +#: ../src/xz/xz.1:1581 +#, no-wrap +msgid "Notes" +msgstr "Hinweise" + +#. type: tbl table +#: ../src/xz/xz.1:1582 +#, no-wrap +msgid "x86" +msgstr "x86" + +#. type: tbl table +#: ../src/xz/xz.1:1582 +#, no-wrap +msgid "32-bit or 64-bit x86" +msgstr "32-Bit oder 64-Bit x86" + +#. type: tbl table +#: ../src/xz/xz.1:1583 +#, no-wrap +msgid "PowerPC" +msgstr "PowerPC" + +#. type: tbl table +#: ../src/xz/xz.1:1583 +#, no-wrap +msgid "Big endian only" +msgstr "Nur Big Endian" + +#. type: tbl table +#: ../src/xz/xz.1:1584 +#, no-wrap +msgid "ARM" +msgstr "ARM" + +#. type: tbl table +#: ../src/xz/xz.1:1584 ../src/xz/xz.1:1585 +#, no-wrap +msgid "Little endian only" +msgstr "Nur Little Endian" + +#. type: tbl table +#: ../src/xz/xz.1:1585 +#, no-wrap +msgid "ARM-Thumb" +msgstr "ARM-Thumb" + +#. type: tbl table +#: ../src/xz/xz.1:1586 +#, no-wrap +msgid "IA-64" +msgstr "IA-64" + +#. type: tbl table +#: ../src/xz/xz.1:1586 +#, no-wrap +msgid "16" +msgstr "16" + +#. type: tbl table +#: ../src/xz/xz.1:1586 ../src/xz/xz.1:1587 +#, no-wrap +msgid "Big or little endian" +msgstr "Big oder Little Endian" + +#. type: tbl table +#: ../src/xz/xz.1:1587 +#, no-wrap +msgid "SPARC" +msgstr "SPARC" + +#. type: Plain text +#: ../src/xz/xz.1:1602 +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 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 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 +msgid "All BCJ filters support the same I:" +msgstr "Alle BCJ-Filter unterstützen die gleichen I:" + +#. type: TP +#: ../src/xz/xz.1:1606 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1620 +msgid "" +"Specify the start I that is used when converting between relative and " +"absolute addresses. The I must be a multiple of the alignment of the " +"filter (see the table above). The default is zero. In practice, the default " +"is good; specifying a custom I is almost never useful." +msgstr "" +"gibt den Start-I an, der bei der Umwandlung zwischen relativen und " +"absoluten Adressen verwendet wird. Der I muss ein Vielfaches der " +"Filterausrichtung sein (siehe die Tabelle oben). Der Standardwert ist 0. In " +"der Praxis ist dieser Standardwert gut; die Angabe eines benutzerdefinierten " +"I ist fast immer unnütz." + +#. type: TP +#: ../src/xz/xz.1:1621 +#, no-wrap +msgid "B<--delta>[B<=>I]" +msgstr "B<--delta>[B<=>I]" + +#. type: Plain text +#: ../src/xz/xz.1:1626 +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 "" +"fügt den Delta-Filter zur Filterkette hinzu. Der Delta-Filter kann nicht als " +"letzter Filter in der Filterkette verwendet werden." + +#. type: Plain text +#: ../src/xz/xz.1:1635 +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(1)." +msgstr "" +"Gegenwärtig wird nur eine einfache, Byte-bezogene Delta-Berechnung " +"unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten Bitmap-" +"Bildern oder unkomprimierten PCM-Audiodaten kann es jedoch sinnvoll sein. " +"Dennoch können für spezielle Zwecke entworfene Algorithmen deutlich bessere " +"Ergebnisse als Delta und LZMA2 liefern. Dies trifft insbesondere auf " +"Audiodaten zu, die sich zum Beispiel mit B(1) schneller und besser " +"komprimieren lassen." + +#. type: Plain text +#: ../src/xz/xz.1:1638 +msgid "Supported I:" +msgstr "Unterstützte I:" + +#. type: TP +#: ../src/xz/xz.1:1639 +#, no-wrap +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1647 +msgid "" +"Specify the I of the delta calculation in bytes. I must " +"be 1-256. The default is 1." +msgstr "" +"gibt den I der Delta-Berechnung in Byte an. Zulässige Werte für den " +"I sind 1 bis 256. Der Vorgabewert ist 1." + +#. type: Plain text +#: ../src/xz/xz.1:1652 +msgid "" +"For example, with B 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 "" +"Zum Beispiel wird mit B und der 8-Byte-Eingabe A1 B1 A2 B3 A3 B5 A4 " +"B7 die Ausgabe A1 B1 01 02 01 02 01 02 sein." + +#. type: SS +#: ../src/xz/xz.1:1654 +#, no-wrap +msgid "Other options" +msgstr "Andere Optionen" + +#. type: TP +#: ../src/xz/xz.1:1655 ../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 +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 was " +"suppressed, the exit status to indicate a warning is still used." +msgstr "" +"unterdrückt Warnungen und Hinweise. Geben Sie dies zweimal an, um auch " +"Fehlermeldungen zu unterdrücken. Diese Option wirkt sich nicht auf den Exit-" +"Status aus. Das bedeutet, das selbst bei einer unterdrückten Warnung der Exit-" +"Status zur Anzeige einer Warnung dennoch verwendet wird." + +#. type: TP +#: ../src/xz/xz.1:1662 +#, no-wrap +msgid "B<-v>, B<--verbose>" +msgstr "B<-v>, B<--verbose>" + +#. type: Plain text +#: ../src/xz/xz.1:1671 +msgid "" +"Be verbose. If standard error is connected to a terminal, B will display " +"a progress indicator. Specifying B<--verbose> twice will give even more " +"verbose output." +msgstr "" +"bewirkt ausführliche Ausgaben. Wenn die Standardfehlerausgabe mit einem " +"Terminal verbunden ist, zeigt B den Fortschritt an. Durch zweimalige " +"Angabe von B<--verbose> wird die Ausgabe noch ausführlicher." + +#. type: Plain text +#: ../src/xz/xz.1:1673 +msgid "The progress indicator shows the following information:" +msgstr "Der Fortschrittsanzeiger stellt die folgenden Informationen dar:" + +#. type: Plain text +#: ../src/xz/xz.1:1678 +msgid "" +"Completion percentage is shown if the size of the input file is known. That " +"is, the percentage cannot be shown in pipes." +msgstr "" +"Der Prozentsatz des Fortschritts wird angezeigt, wenn die Größe der " +"Eingabedatei bekannt ist. Das bedeutet, dass der Prozentsatz in " +"Weiterleitungen (Pipes) nicht angezeigt werden kann." + +#. type: Plain text +#: ../src/xz/xz.1:1681 +msgid "" +"Amount of compressed data produced (compressing) or consumed (decompressing)." +msgstr "" +"Menge der erzeugten komprimierten Daten (bei der Kompression) oder der " +"verarbeiteten Daten (bei der Dekompression)." + +#. type: Plain text +#: ../src/xz/xz.1:1684 +msgid "" +"Amount of uncompressed data consumed (compressing) or produced " +"(decompressing)." +msgstr "" +"Menge der verarbeiteten unkomprimierten Daten (bei der Kompression) oder der " +"erzeugten Daten (bei der Dekompression)." + +#. type: Plain text +#: ../src/xz/xz.1:1688 +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 "" +"Kompressionsverhältnis, das mittels Dividieren der Menge der bisher " +"komprimierten Daten durch die Menge der bisher verarbeiteten unkomprimierten " +"Daten ermittelt wird." + +#. type: Plain text +#: ../src/xz/xz.1:1695 +msgid "" +"Compression or decompression speed. This is measured as the amount of " +"uncompressed data consumed (compression) or produced (decompression) per " +"second. It is shown after a few seconds have passed since B started " +"processing the file." +msgstr "" +"Kompressions- oder Dekompressionsgeschwindigkeit. Diese wird anhand der Menge " +"der unkomprimierten verarbeiteten Daten (bei der Kompression) oder der Menge " +"der erzeugten Daten (bei der Dekompression) pro Sekunde gemessen. Die Anzeige " +"startet einige Sekunden nachdem B mit der Verarbeitung der Datei begonnen " +"hat." + +#. type: Plain text +#: ../src/xz/xz.1:1697 +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 +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 started " +"processing the file. The time is shown in a less precise format which never " +"has any colons, e.g. 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 " +"B mit der Verarbeitung der Datei begonnen hat. Die Zeit wird in einem " +"weniger präzisen Format ohne Doppelpunkte angezeigt, zum Beispiel 2 min 30 s." + +#. type: Plain text +#: ../src/xz/xz.1:1720 +msgid "" +"When standard error is not a terminal, B<--verbose> will make B 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." +msgstr "" +"Wenn die Standardfehlerausgabe kein Terminal ist, schreibt B mit B<--" +"verbose> nach dem Komprimieren oder Dekomprimieren der Datei in einer " +"einzelnen Zeile den Dateinamen, die komprimierte Größe, die unkomprimierte " +"Größe, das Kompressionsverhältnis und eventuell auch die Geschwindigkeit und " +"die vergangene Zeit in die Standardfehlerausgabe. Die Geschwindigkeit und die " +"vergangene Zeit werden nur angezeigt, wenn der Vorgang mindestens ein paar " +"Sekunden gedauert hat. Wurde der Vorgang nicht beendet, zum Beispiel weil ihn " +"der Benutzer abgebrochen hat, wird außerdem der Prozentsatz des erreichten " +"Verarbeitungsfortschritts aufgenommen, sofern die Größe der Eingabedatei " +"bekannt ist." + +#. type: TP +#: ../src/xz/xz.1:1720 ../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 +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<--" +"quiet> and B<--no-warn> have to be used to not display warnings and to not " +"alter the exit status." +msgstr "" +"setzt den Exit-Status nicht auf 2, selbst wenn eine Bedingung erfüllt ist, " +"die eine Warnung gerechtfertigt hätte. Diese Option wirkt sich nicht auf die " +"Ausführlichkeitsstufe aus, daher müssen sowohl B<--quiet> als auch B<--no-" +"warn> angegeben werden, um einerseits keine Warnungen anzuzeigen und " +"andererseits auch den Exit-Status nicht zu ändern." + +#. type: TP +#: ../src/xz/xz.1:1730 +#, no-wrap +msgid "B<--robot>" +msgstr "B<--robot>" + +#. type: Plain text +#: ../src/xz/xz.1:1742 +msgid "" +"Print messages in a machine-parsable format. This is intended to ease " +"writing frontends that want to use B instead of liblzma, which may be the " +"case with various scripts. The output with this option enabled is meant to " +"be stable across B releases. See the section B for details." +msgstr "" +"gibt Meldungen in einem maschinenlesbaren Format aus. Dadurch soll das " +"Schreiben von Frontends erleichtert werden, die B anstelle von Liblzma " +"verwenden wollen, was in verschiedenen Skripten der Fall sein kann. Die " +"Ausgabe mit dieser aktivierten Option sollte über mehrere B-" +"Veröffentlichungen stabil sein. Details hierzu finden Sie im Abschnitt " +"B." + +#. type: TP +#: ../src/xz/xz.1:1742 +#, no-wrap +msgid "B<--info-memory>" +msgstr "B<--info-memory>" + +#. type: Plain text +#: ../src/xz/xz.1:1748 +msgid "" +"Display, in human-readable format, how much physical memory (RAM) B " +"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 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 +#, no-wrap +msgid "B<-h>, B<--help>" +msgstr "B<-h>, B<--help>" + +#. type: Plain text +#: ../src/xz/xz.1:1752 +msgid "" +"Display a help message describing the most commonly used options, and exit " +"successfully." +msgstr "" +"zeigt eine Hilfemeldung mit den am häufigsten genutzten Optionen an und " +"beendet das Programm erfolgreich." + +#. type: TP +#: ../src/xz/xz.1:1752 +#, 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 +msgid "" +"Display a help message describing all features of B, and exit successfully" +msgstr "" +"zeigt eine Hilfemeldung an, die alle Funktionsmerkmale von B beschreibt " +"und beendet das Programm erfolgreich." + +#. type: TP +#: ../src/xz/xz.1:1757 ../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 +msgid "" +"Display the version number of B and liblzma in human readable format. To " +"get machine-parsable output, specify B<--robot> before B<--version>." +msgstr "" +"zeigt die Versionsnummer von B und Liblzma in einem menschenlesbaren " +"Format an. Um eine maschinell auswertbare Ausgabe zu erhalten, geben Sie B<--" +"robot> vor B<--version> an." + +#. type: SH +#: ../src/xz/xz.1:1767 +#, no-wrap +msgid "ROBOT MODE" +msgstr "ROBOTER-MODUS" + +#. type: Plain text +#: ../src/xz/xz.1:1783 +msgid "" +"The robot mode is activated with the B<--robot> option. It makes the output " +"of B easier to parse by other programs. Currently B<--robot> is " +"supported only together with B<--version>, B<--info-memory>, and B<--list>. " +"It will be supported for compression and decompression in the future." +msgstr "" +"Der Roboter-Modus wird mit der Option B<--robot> aktiviert. Er bewirkt, dass " +"die Ausgabe von B leichter von anderen Programmen ausgewertet werden " +"kann. Gegenwärtig wird B<--robot> nur zusammen mit B<--version>, B<--info-" +"memory> und B<--list> unterstützt. In der Zukunft wird dieser Modus auch für " +"Kompression und Dekompression unterstützt." + +#. type: SS +#: ../src/xz/xz.1:1784 +#, no-wrap +msgid "Version" +msgstr "Version" + +#. type: Plain text +#: ../src/xz/xz.1:1789 +msgid "" +"B will print the version number of B and liblzma in " +"the following format:" +msgstr "" +"B gibt die Versionsnummern von B und Liblzma im " +"folgenden Format aus:" + +#. type: Plain text +#: ../src/xz/xz.1:1791 +msgid "BI" +msgstr "BI" + +#. type: Plain text +#: ../src/xz/xz.1:1793 +msgid "BI" +msgstr "BI" + +#. type: TP +#: ../src/xz/xz.1:1793 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: ../src/xz/xz.1:1796 +msgid "Major version." +msgstr "Hauptversion." + +#. type: TP +#: ../src/xz/xz.1:1796 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: ../src/xz/xz.1:1801 +msgid "" +"Minor version. Even numbers are stable. Odd numbers are alpha or beta " +"versions." +msgstr "" +"Unterversion. Gerade Zahlen bezeichnen eine stabile Version. Ungerade Zahlen " +"bezeichnen Alpha- oder Betaversionen." + +#. type: TP +#: ../src/xz/xz.1:1801 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: ../src/xz/xz.1:1805 +msgid "" +"Patch level for stable releases or just a counter for development releases." +msgstr "" +"Patch-Stufe für stabile Veröffentlichungen oder einfach nur ein Zähler für " +"Entwicklungsversionen." + +#. type: TP +#: ../src/xz/xz.1:1805 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: ../src/xz/xz.1:1813 +msgid "" +"Stability. 0 is alpha, 1 is beta, and 2 is stable. I should be always 2 " +"when I is even." +msgstr "" +"Stabilität. 0 ist Alpha, 1 ist Beta und 2 ist stabil. I sollte immer 2 " +"sein, wenn I eine gerade Zahl ist." + +#. type: Plain text +#: ../src/xz/xz.1:1818 +msgid "" +"I are the same on both lines if B and liblzma are from the same " +"XZ Utils release." +msgstr "" +"I sind in beiden Zeilen gleich, sofern B und Liblzma aus der " +"gleichen Veröffentlichung der XZ-Utils stammen." + +#. type: Plain text +#: ../src/xz/xz.1:1824 +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 +#, no-wrap +msgid "Memory limit information" +msgstr "Informationen zur Speicherbedarfsbegrenzung" + +#. type: Plain text +#: ../src/xz/xz.1:1828 +msgid "" +"B prints a single line with three tab-separated " +"columns:" +msgstr "" +"B gibt eine einzelne Zeile mit drei durch " +"Tabulatoren getrennten Spalten aus:" + +#. type: IP +#: ../src/xz/xz.1:1828 +#, 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" + +#. 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 +#, no-wrap +msgid "2." +msgstr "2." + +#. type: Plain text +#: ../src/xz/xz.1:1834 +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." +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." + +#. 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 +#, no-wrap +msgid "3." +msgstr "3." + +#. type: Plain text +#: ../src/xz/xz.1:1838 +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." +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." + +#. type: Plain text +#: ../src/xz/xz.1:1842 +msgid "" +"In the future, the output of B may have more " +"columns, but never more than a single line." +msgstr "" +"In der Zukunft könnte die Ausgabe von B weitere " +"Spalten enthalten, aber niemals mehr als eine einzelne Zeile." + +#. type: SS +#: ../src/xz/xz.1:1843 +#, no-wrap +msgid "List mode" +msgstr "Listenmodus" + +#. type: Plain text +#: ../src/xz/xz.1:1848 +msgid "" +"B uses tab-separated output. The first column of every " +"line has a string that indicates the type of the information found on that " +"line:" +msgstr "" +"B verwendet eine durch Tabulatoren getrennte Ausgabe. In " +"der ersten Spalte jeder Zeile bezeichnet eine Zeichenkette den Typ der " +"Information, die in dieser Zeile enthalten ist:" + +#. type: TP +#: ../src/xz/xz.1:1848 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1852 +msgid "" +"This is always the first line when starting to list a file. The second " +"column on the line is the filename." +msgstr "" +"Dies ist stets die erste Zeile, wenn eine Datei aufgelistet wird. Die zweite " +"Spalte in der Zeile enthält den Dateinamen." + +#. type: TP +#: ../src/xz/xz.1:1852 +#, no-wrap +msgid "B" +msgstr "B" + +# CHECK overall +#. type: Plain text +#: ../src/xz/xz.1:1860 +msgid "" +"This line contains overall information about the B<.xz> file. This line is " +"always printed after the B line." +msgstr "" +"Diese Zeile enthält allgemeine Informationen zur B<.xz>-Datei. Diese Zeile " +"wird stets nach der B-Zeile ausgegeben." + +#. type: TP +#: ../src/xz/xz.1:1860 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1870 +msgid "" +"This line type is used only when B<--verbose> was specified. There are as " +"many B lines as there are streams in the B<.xz> file." +msgstr "" +"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> angegeben wurde. Es " +"gibt genau so viele B-Zeilen, wie Datenströme in der B<.xz>-Datei " +"enthalten sind." + +#. type: TP +#: ../src/xz/xz.1:1870 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1885 +msgid "" +"This line type is used only when B<--verbose> was specified. There are as " +"many B lines as there are blocks in the B<.xz> file. The B " +"lines are shown after all the B lines; different line types are not " +"interleaved." +msgstr "" +"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> angegeben wurde. Es " +"gibt so viele B-Zeilen, wie Blöcke in der B<.xz>-Datei. Die B-" +"Zeilen werden nach allen B-Zeilen angezeigt; verschiedene Zeilentypen " +"werden nicht verschachtelt." + +#. type: TP +#: ../src/xz/xz.1:1885 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1900 +msgid "" +"This line type is used only when B<--verbose> was specified twice. This line " +"is printed after all B lines. Like the B line, the B " +"line contains overall information about the B<.xz> file." +msgstr "" +"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> zwei Mal angegeben " +"wurde. Diese Zeile wird nach allen B-Zeilen ausgegeben. Wie die " +"B-Zeile enthält die B-Zeile allgemeine Informationen zur B<." +"xz>-Datei." + +#. type: TP +#: ../src/xz/xz.1:1900 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:1904 +msgid "" +"This line is always the very last line of the list output. It shows the " +"total counts and sizes." +msgstr "" +"Diese Zeile ist immer die letzte der Listenausgabe. Sie zeigt die " +"Gesamtanzahlen und -größen an." + +#. type: Plain text +#: ../src/xz/xz.1:1908 +msgid "The columns of the B lines:" +msgstr "Die Spalten der B-Zeilen:" + +#. type: Plain text +#: ../src/xz/xz.1:1912 +msgid "Number of streams in the file" +msgstr "Anzahl der Datenströme in der Datei" + +#. type: Plain text +#: ../src/xz/xz.1:1914 +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 +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 +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 +msgid "" +"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 " +"9.999 liegt, werden drei Minuszeichen (B<--->) anstelle des " +"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 +#, no-wrap +msgid "7." +msgstr "7." + +#. type: Plain text +#: ../src/xz/xz.1:1937 +msgid "" +"Comma-separated list of integrity check names. The following strings are " +"used for the known check types: B, B, B, and B. " +"For unknown check types, BI is used, where I is the Check ID " +"as a decimal number (one or two digits)." +msgstr "" +"Durch Kommata getrennte Liste der Namen der Integritätsprüfungen. Für die " +"bekannten Überprüfungstypen werden folgende Zeichenketten verwendet: B, " +"B, B und B. BI wird verwendet, wobei I " +"die Kennung der Überprüfung als Dezimalzahl angibt (ein- oder zweistellig)." + +#. type: IP +#: ../src/xz/xz.1:1937 ../src/xz/xz.1:1959 ../src/xz/xz.1:1986 +#: ../src/xz/xz.1:2083 +#, no-wrap +msgid "8." +msgstr "8." + +#. type: Plain text +#: ../src/xz/xz.1:1939 +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 +msgid "The columns of the B lines:" +msgstr "Die Spalten der B-Zeilen:" + +#. type: Plain text +#: ../src/xz/xz.1:1949 +msgid "Stream number (the first stream is 1)" +msgstr "Datenstromnummer (der erste Datenstrom ist 1)" + +#. type: Plain text +#: ../src/xz/xz.1:1951 +msgid "Number of blocks in the stream" +msgstr "Anzahl der Blöcke im Datenstrom" + +#. type: Plain text +#: ../src/xz/xz.1:1953 +msgid "Compressed start offset" +msgstr "Komprimierte Startposition" + +#. type: Plain text +#: ../src/xz/xz.1:1955 +msgid "Uncompressed start offset" +msgstr "Unkomprimierte Startposition" + +#. type: Plain text +#: ../src/xz/xz.1:1957 +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 +msgid "Uncompressed size" +msgstr "Unkomprimierte Größe" + +#. type: Plain text +#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1990 +msgid "Compression ratio" +msgstr "Kompressionsverhältnis" + +#. type: IP +#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1988 ../src/xz/xz.1:2085 +#, no-wrap +msgid "9." +msgstr "9." + +#. type: Plain text +#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1992 +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 +#, no-wrap +msgid "10." +msgstr "10." + +#. type: Plain text +#: ../src/xz/xz.1:1965 +msgid "Size of stream padding" +msgstr "Größe der Datenstromauffüllung" + +#. type: Plain text +#: ../src/xz/xz.1:1971 +msgid "The columns of the B lines:" +msgstr "Die Spalten der B-Zeilen:" + +#. type: Plain text +#: ../src/xz/xz.1:1975 +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 +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 +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 +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 +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 +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 +msgid "" +"If B<--verbose> was specified twice, additional columns are included on the " +"B lines. These are not displayed with a single B<--verbose>, because " +"getting this information requires many seeks and can thus be slow:" +msgstr "" +"Wenn B<--verbose> zwei Mal angegeben wurde, werden zusätzliche Spalten in die " +"B-Zeilen eingefügt. Diese werden mit einem einfachen B<--verbose> " +"nicht angezeigt, da das Ermitteln dieser Informationen viele Suchvorgänge " +"erfordert und daher recht langsam sein kann:" + +#. type: IP +#: ../src/xz/xz.1:2006 ../src/xz/xz.1:2106 +#, no-wrap +msgid "11." +msgstr "11." + +#. type: Plain text +#: ../src/xz/xz.1:2008 +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 +#, no-wrap +msgid "12." +msgstr "12." + +#. type: Plain text +#: ../src/xz/xz.1:2010 +msgid "Block header size" +msgstr "Block-Header-Größe" + +#. type: IP +#: ../src/xz/xz.1:2010 +#, no-wrap +msgid "13." +msgstr "13." + +#. type: Plain text +#: ../src/xz/xz.1:2020 +msgid "" +"Block flags: B indicates that compressed size is present, and B " +"indicates that uncompressed size is present. If the flag is not set, a dash " +"(B<->) is shown instead to keep the string length fixed. New flags may be " +"added to the end of the string in the future." +msgstr "" +"Block-Schalter: B gibt an, dass die komprimierte Größe verfügbar ist, und " +"B gibt an, dass die unkomprimierte Größe verfügbar ist. Falls der Schalter " +"nicht gesetzt ist, wird stattdessen ein Bindestrich (B<->) angezeigt, um die " +"Länge der Zeichenkette beizubehalten. In Zukunft könnten neue Schalter am " +"Ende der Zeichenkette hinzugefügt werden." + +#. type: IP +#: ../src/xz/xz.1:2020 +#, no-wrap +msgid "14." +msgstr "14." + +#. type: Plain text +#: ../src/xz/xz.1:2023 +msgid "" +"Size of the actual compressed data in the block (this excludes the block " +"header, block padding, and check fields)" +msgstr "" +"Größe der tatsächlichen komprimierten Daten im Block. Ausgeschlossen sind " +"hierbei die Block-Header, die Blockauffüllung und die Prüffelder." + +#. type: IP +#: ../src/xz/xz.1:2023 +#, no-wrap +msgid "15." +msgstr "15." + +#. type: Plain text +#: ../src/xz/xz.1:2028 +msgid "" +"Amount of memory (in bytes) required to decompress this block with this B " +"version" +msgstr "" +"Größe des Speichers (in Byte), der zum Dekomprimieren dieses Blocks mit " +"dieser B-Version benötigt wird." + +#. type: IP +#: ../src/xz/xz.1:2028 +#, no-wrap +msgid "16." +msgstr "16." + +#. type: Plain text +#: ../src/xz/xz.1:2035 +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 " +"stored in the B<.xz> headers." +msgstr "" +"Filterkette. Beachten Sie, dass die meisten der bei der Kompression " +"verwendeten Optionen nicht bekannt sein können, da in den B<.xz>-Headern nur " +"die für die Dekompression erforderlichen Optionen gespeichert sind." + +#. type: Plain text +#: ../src/xz/xz.1:2041 +msgid "The columns of the B lines:" +msgstr "Die Spalten der B-Zeilen:" + +#. type: Plain text +#: ../src/xz/xz.1:2048 +msgid "" +"Amount of memory (in bytes) required to decompress this file with this B " +"version" +msgstr "" +"Größe des Speichers (in Byte), der zum Dekomprimieren dieser Datei mit dieser " +"B-Version benötigt wird." + +#. type: Plain text +#: ../src/xz/xz.1:2054 ../src/xz/xz.1:2112 +msgid "" +"B or B indicating if all block headers have both compressed size and " +"uncompressed size stored in them" +msgstr "" +"B oder B geben an, ob in allen Block-Headern sowohl die komprimierte " +"als auch die unkomprimierte Größe gespeichert ist." + +#. type: Plain text +#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2116 +msgid "I B I<5.1.2alpha:>" +msgstr "I B I<5.1.2alpha:>" + +#. type: Plain text +#: ../src/xz/xz.1:2062 ../src/xz/xz.1:2120 +msgid "Minimum B version required to decompress the file" +msgstr "" +"Minimale B-Version, die zur Dekompression der Datei erforderlich ist" + +#. type: Plain text +#: ../src/xz/xz.1:2068 +msgid "The columns of the B line:" +msgstr "Die Spalten der B-Zeile:" + +#. type: Plain text +#: ../src/xz/xz.1:2072 +msgid "Number of streams" +msgstr "Anzahl der Datenströme" + +#. type: Plain text +#: ../src/xz/xz.1:2074 +msgid "Number of blocks" +msgstr "Anzahl der Blöcke" + +#. type: Plain text +#: ../src/xz/xz.1:2076 +msgid "Compressed size" +msgstr "Komprimierte Größe" + +#. type: Plain text +#: ../src/xz/xz.1:2080 +msgid "Average compression ratio" +msgstr "Durchschnittliches Kompressionsverhältnis" + +#. type: Plain text +#: ../src/xz/xz.1:2083 +msgid "" +"Comma-separated list of integrity check names that were present in the files" +msgstr "" +"Durch Kommata getrennte Liste der Namen der Integritätsprüfungen, die in den " +"Dateien präsent waren." + +#. type: Plain text +#: ../src/xz/xz.1:2085 +msgid "Stream padding size" +msgstr "Größe der Datenstromauffüllung" + +#. type: Plain text +#: ../src/xz/xz.1:2091 +msgid "" +"Number of files. This is here to keep the order of the earlier columns the " +"same as on B lines." +msgstr "" +"Anzahl der Dateien. Dies dient dazu, die Reihenfolge der vorigen Spalten an " +"die in den B-Zeilen anzugleichen." + +#. type: Plain text +#: ../src/xz/xz.1:2099 +msgid "" +"If B<--verbose> was specified twice, additional columns are included on the " +"B line:" +msgstr "" +"Wenn B<--verbose> zwei Mal angegeben wird, werden zusätzliche Spalten in die " +"B-Zeile eingefügt:" + +#. type: Plain text +#: ../src/xz/xz.1:2106 +msgid "" +"Maximum amount of memory (in bytes) required to decompress the files with " +"this B version" +msgstr "" +"Maximale Größe des Speichers (in Byte), der zum Dekomprimieren der Dateien " +"mit dieser B-Version benötigt wird." + +#. type: Plain text +#: ../src/xz/xz.1:2126 +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 "" +"Zukünftige Versionen könnten neue Zeilentypen hinzufügen, weiterhin könnten " +"auch in den vorhandenen Zeilentypen weitere Spalten hinzugefügt werden, aber " +"die existierenden Spalten werden nicht geändert." + +#. type: SH +#: ../src/xz/xz.1:2127 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44 +#, 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 +#, no-wrap +msgid "B<0>" +msgstr "B<0>" + +#. type: Plain text +#: ../src/xz/xz.1:2131 ../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 +#, 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 +msgid "An error occurred." +msgstr "Ein Fehler ist aufgetreten." + +#. type: TP +#: ../src/xz/xz.1:2134 +#, no-wrap +msgid "B<2>" +msgstr "B<2>" + +#. type: Plain text +#: ../src/xz/xz.1:2138 +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 +msgid "" +"Notices (not warnings or errors) printed on standard error don't affect the " +"exit status." +msgstr "" +"In die Standardausgabe geschriebene Hinweise (keine Warnungen oder Fehler), " +"welche den Exit-Status nicht beeinflussen." + +#. type: SH +#: ../src/xz/xz.1:2142 ../src/scripts/xzgrep.1:80 ../src/scripts/xzless.1:52 +#, no-wrap +msgid "ENVIRONMENT" +msgstr "UMGEBUNGSVARIABLEN" + +#. type: Plain text +#: ../src/xz/xz.1:2155 +msgid "" +"B parses space-separated lists of options from the environment variables " +"B and B, in this order, before parsing the options from " +"the command line. Note that only options are parsed from the environment " +"variables; all non-options are silently ignored. Parsing is done with " +"B(3) which is used also for the command line arguments." +msgstr "" +"B wertet eine durch Leerzeichen getrennte Liste von Optionen in den " +"Umgebungsvariablen B und B aus (in dieser Reihenfolge), " +"bevor die Optionen aus der Befehlszeile ausgewertet werden. Beachten Sie, " +"dass beim Auswerten der Umgebungsvariablen nur Optionen berücksichtigt " +"werden; alle Einträge, die keine Optionen sind, werden stillschweigend " +"ignoriert. Die Auswertung erfolgt mit B(3), welches auch für die " +"Befehlszeilenargumente verwendet wird." + +#. type: TP +#: ../src/xz/xz.1:2155 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:2164 +msgid "" +"User-specific or system-wide default options. Typically this is set in a " +"shell initialization script to enable B's memory usage limiter by " +"default. Excluding shell initialization scripts and similar special cases, " +"scripts must never set or unset B." +msgstr "" +"Benutzerspezifische oder systemweite Standardoptionen. Typischerweise werden " +"diese in einem Shell-Initialisierungsskript gesetzt, um die " +"Speicherbedarfsbegrenzung von B standardmäßig zu aktivieren. Außer bei " +"Shell-Initialisierungsskripten und in ähnlichen Spezialfällen darf die " +"Variable B in Skripten niemals gesetzt oder außer Kraft gesetzt " +"werden." + +#. type: TP +#: ../src/xz/xz.1:2164 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/xz/xz.1:2175 +msgid "" +"This is for passing options to B when it is not possible to set the " +"options directly on the B command line. This is the case e.g. when B " +"is run by a script or tool, e.g. GNU B(1):" +msgstr "" +"Dies dient der Übergabe von Optionen an B, wenn es nicht möglich ist, die " +"Optionen direkt in der Befehlszeile von B zu übergeben. Dies ist " +"beispielsweise der Fall, wenn B von einem Skript oder Dienstprogramm " +"ausgeführt wird, zum Beispiel GNU B(1):" + +#. type: Plain text +#: ../src/xz/xz.1:2181 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2194 +msgid "" +"Scripts may use B e.g. to set script-specific default compression " +"options. It is still recommended to allow users to override B if " +"that is reasonable, e.g. in B(1) scripts one may use something like this:" +msgstr "" +"Skripte können B zum Beispiel zum Setzen skriptspezifischer Standard-" +"Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, Benutzern " +"die Außerkraftsetzung von B zu erlauben, falls dies angemessen ist. " +"Zum Beispiel könnte in B(1)-Skripten Folgendes stehen:" + +#. type: Plain text +#: ../src/xz/xz.1:2201 +#, no-wrap +msgid "" +"CW\n" +msgstr "" +"CW\n" + +#. type: SH +#: ../src/xz/xz.1:2206 +#, no-wrap +msgid "LZMA UTILS COMPATIBILITY" +msgstr "KOMPATIBILITÄT ZU DEN LZMA-UTILS" + +#. type: Plain text +#: ../src/xz/xz.1:2219 +msgid "" +"The command line syntax of B is practically a superset of B, " +"B, and B 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. There are some incompatibilities though, which may sometimes cause " +"problems." +msgstr "" +"Die Befehlszeilensyntax von B ist praktisch eine Obermenge der von " +"B, B und B in den LZMA-Utils der Versionen 4.32.x. In " +"den meisten Fällen sollte es möglich sein, die LZMA-Utils durch die XZ-Utils " +"zu ersetzen, ohne vorhandene Skripte ändern zu müssen. Dennoch gibt es einige " +"Inkompatibilitäten, die manchmal Probleme verursachen können." + +#. type: SS +#: ../src/xz/xz.1:2220 +#, no-wrap +msgid "Compression preset levels" +msgstr "Voreinstellungsstufen zur Kompression" + +#. type: Plain text +#: ../src/xz/xz.1:2227 +msgid "" +"The numbering of the compression level presets is not identical in B and " +"LZMA Utils. The most important difference is how dictionary sizes are mapped " +"to different presets. Dictionary size is roughly equal to the decompressor " +"memory usage." +msgstr "" +"Die Nummerierung der Voreinstellungsstufen der Kompression ist in B und " +"den LZMA-Utils unterschiedlich. Der wichtigste Unterschied ist die Zuweisung " +"der Wörterbuchgrößen zu den verschiedenen Voreinstellungsstufen. Die " +"Wörterbuchgröße ist etwa gleich dem Speicherbedarf bei der Dekompression." + +#. type: tbl table +#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 +#, no-wrap +msgid "Level" +msgstr "Stufe" + +#. type: tbl table +#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 +#, no-wrap +msgid "xz" +msgstr "xz" + +#. type: tbl table +#: ../src/xz/xz.1:2233 +#, no-wrap +msgid "LZMA Utils" +msgstr "LZMA-Utils" + +#. type: tbl table +#: ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 +#, no-wrap +msgid "N/A" +msgstr "nicht verfügbar" + +#. type: tbl table +#: ../src/xz/xz.1:2235 +#, no-wrap +msgid "64 KiB" +msgstr "64 KiB" + +#. type: tbl table +#: ../src/xz/xz.1:2237 +#, no-wrap +msgid "512 KiB" +msgstr "512 KiB" + +#. type: Plain text +#: ../src/xz/xz.1:2252 +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 " +"the difference even bigger:" +msgstr "" +"Die Unterschiede in der Wörterbuchgröße beeinflussen auch den Speicherbedarf " +"bei der Kompression, aber es gibt noch einige andere Unterschiede zwischen " +"den LZMA-Utils und den XZ-Utils, die die Kluft noch vergrößern:" + +#. type: tbl table +#: ../src/xz/xz.1:2258 +#, 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 +#, no-wrap +msgid "12 MiB" +msgstr "12 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:2264 +#, no-wrap +msgid "26 MiB" +msgstr "26 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:2265 +#, no-wrap +msgid "45 MiB" +msgstr "45 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:2266 +#, no-wrap +msgid "83 MiB" +msgstr "83 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:2267 +#, no-wrap +msgid "159 MiB" +msgstr "159 MiB" + +#. type: tbl table +#: ../src/xz/xz.1:2268 +#, no-wrap +msgid "311 MiB" +msgstr "311 MiB" + +#. type: Plain text +#: ../src/xz/xz.1:2277 +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 "" +"Die standardmäßige Voreinstellungsstufe in den LZMA-Utils ist B<-7>, während " +"diese in den XZ-Utils B<-6> ist, daher verwenden beide standardmäßig ein 8 " +"MiB großes Wörterbuch." + +#. type: SS +#: ../src/xz/xz.1:2278 +#, 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 +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." +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 " +"Alternative kann die unkomprimierte Größe als unbekannt markiert und eine " +"Nutzdatenende-Markierung (end-of-payload) verwendet werden, um anzugeben, wo " +"der Dekompressor stoppen soll. Die LZMA-Utils verwenden diese Methode, wenn " +"die unkomprimierte Größe unbekannt ist, was beispielsweise in Pipes " +"(Befehlsverkettungen) der Fall ist." + +#. type: Plain text +#: ../src/xz/xz.1:2309 +msgid "" +"B supports decompressing B<.lzma> files with or without end-of-payload " +"marker, but all B<.lzma> files created by B will use end-of-payload " +"marker and have uncompressed size marked as unknown in the B<.lzma> header. " +"This may be a problem in some uncommon situations. For example, a B<.lzma> " +"decompressor in an embedded device might work only with files that have known " +"uncompressed size. If you hit this problem, you need to use LZMA Utils or " +"LZMA SDK to create B<.lzma> files with known uncompressed size." +msgstr "" +"B unterstützt die Dekompression von B<.lzma>-Dateien mit oder ohne " +"Nutzdatenende-Markierung, aber alle von B erstellten B<.lzma>-Dateien " +"verwenden diesen Nutzdatenende-Markierung, wobei die unkomprimierte Größe in " +"den B<.lzma>-Headern als unbekannt markiert wird. Das könnte in einigen " +"unüblichen Situationen ein Problem sein. Zum Beispiel könnte ein B<.lzma>-" +"Dekompressor in einem Gerät mit eingebettetem System nur mit Dateien " +"funktionieren, deren unkomprimierte Größe bekannt ist. Falls Sie auf dieses " +"Problem stoßen, müssen Sie die LZMA-Utils oder das LZMA-SDK verwenden, um B<." +"lzma>-Dateien mit bekannter unkomprimierter Größe zu erzeugen." + +#. type: SS +#: ../src/xz/xz.1:2310 +#, no-wrap +msgid "Unsupported .lzma files" +msgstr "Nicht unterstützte .lzma-Dateien" + +#. type: Plain text +#: ../src/xz/xz.1:2333 +msgid "" +"The B<.lzma> format allows I values up to 8, and I values up to 4. " +"LZMA Utils can decompress files with any I and I, but always creates " +"files with B and B. Creating files with other I and I is " +"possible with B and with LZMA SDK." +msgstr "" +"Das B<.lzma>-Format erlaubt I-Werte bis zu 8 und I-Werte bis zu 4. " +"Die LZMA-Utils können Dateien mit beliebigem I und I dekomprimieren, " +"aber erzeugen immer Dateien mit B und B. Das Erzeugen von Dateien " +"mit anderem I und I ist mit B und mit dem LZMA-SDK möglich." + +#. type: Plain text +#: ../src/xz/xz.1:2344 +msgid "" +"The implementation of the LZMA1 filter in liblzma requires that the sum of " +"I and I must not exceed 4. Thus, B<.lzma> files, which exceed this " +"limitation, cannot be decompressed with B." +msgstr "" +"Die Implementation des LZMA-Filters in liblzma setzt voraus, dass die Summe " +"von I und I nicht größer als 4 ist. Daher können B<.lzma>-Dateien, " +"welche diese Begrenzung überschreiten, mit B nicht dekomprimiert werden." + +#. type: Plain text +#: ../src/xz/xz.1:2359 +msgid "" +"LZMA Utils creates only B<.lzma> files which have a dictionary size of 2^I " +"(a power of 2) but accepts files with any dictionary size. liblzma accepts " +"only B<.lzma> files which have a dictionary size of 2^I or 2^I + " +"2^(I-1). This is to decrease false positives when detecting B<.lzma> " +"files." +msgstr "" +"Die LZMA-Utils erzeugen nur B<.lzma>-Dateien mit einer Wörterbuchgröße von " +"2^I (einer Zweierpotenz), aber akzeptieren Dateien mit einer beliebigen " +"Wörterbuchgröße. Liblzma akzeptiert nur B<.lzma>-Dateien mit einer " +"Wörterbuchgröße von 2^I oder 2^I + 2^(I-1). Dies dient zum " +"Verringern von Fehlalarmen beim Erkennen von B<.lzma>-Dateien." + +#. type: Plain text +#: ../src/xz/xz.1:2364 +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 "" +"Diese Einschränkungen sollten in der Praxis kein Problem sein, da praktisch " +"alle B<.lzma>-Dateien mit Einstellungen komprimiert wurden, die Liblzma " +"akzeptieren wird." + +#. type: SS +#: ../src/xz/xz.1:2365 +#, no-wrap +msgid "Trailing garbage" +msgstr "Angehängter Datenmüll" + +#. type: Plain text +#: ../src/xz/xz.1:2375 +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 " +"Utils don't support decompressing concatenated B<.lzma> files." +msgstr "" +"Bei der Dekompression ignorieren die LZMA-Utils stillschweigend alles nach " +"dem ersten B<.lzma>-Datenstrom. In den meisten Situationen ist das ein " +"Fehler. Das bedeutet auch, dass die LZMA-Utils die Dekompression verketteter " +"B<.lzma>-Dateien nicht unterstützen." + +#. type: Plain text +#: ../src/xz/xz.1:2385 +msgid "" +"If there is data left after the first B<.lzma> stream, B considers the " +"file to be corrupt unless B<--single-stream> was used. This may break " +"obscure scripts which have assumed that trailing garbage is ignored." +msgstr "" +"Wenn nach dem ersten B<.lzma>-Datenstrom Daten verbleiben, erachtet B die " +"Datei als beschädigt, es sei denn, die Option B<--single-stream> wurde " +"verwendet. Dies könnte die Ausführung von Skripten beeinflussen, die davon " +"ausgehen, dass angehängter Datenmüll ignoriert wird." + +#. type: SH +#: ../src/xz/xz.1:2386 ../src/xzdec/xzdec.1:117 +#, no-wrap +msgid "NOTES" +msgstr "ANMERKUNGEN" + +#. type: SS +#: ../src/xz/xz.1:2388 +#, no-wrap +msgid "Compressed output may vary" +msgstr "Die komprimierte Ausgabe kann variieren" + +#. type: Plain text +#: ../src/xz/xz.1:2399 +msgid "" +"The exact compressed output produced from the same uncompressed input file " +"may vary between XZ Utils versions even if compression options are " +"identical. This is because the encoder can be improved (faster or better " +"compression) without affecting the file format. The output can vary even " +"between different builds of the same XZ Utils version, if different build " +"options are used." +msgstr "" +"Die exakte komprimierte Ausgabe, die aus der gleichen unkomprimierten " +"Eingabedatei erzeugt wird, kann zwischen den Versionen der XZ-Utils " +"unterschiedlich sein, selbst wenn die Kompressionsoptionen identisch sind. " +"Das kommt daher, weil der Kodierer verbessert worden sein könnte " +"(hinsichtlich schnellerer oder besserer Kompression), ohne das Dateiformat zu " +"beeinflussen. Die Ausgabe kann sogar zwischen verschiedenen Programmen der " +"gleichen Version der XZ-Utils variieren, wenn bei der Erstellung des " +"Binärprogramms unterschiedliche Optionen verwendet wurden." + +#. type: Plain text +#: ../src/xz/xz.1:2409 +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 " +"compressed with the same xz version. This problem can be fixed if a part of " +"the encoder implementation is frozen to keep rsyncable output stable across " +"xz versions." +msgstr "" +"Sobald B<--rsyncable> implementiert wurde, bedeutet das, dass die sich " +"ergebenden Dateien nicht notwendigerweise mit Rsync abgeglichen werden " +"können, außer wenn die alte und neue Datei mit der gleichen B-Version " +"erzeugt wurden. Das Problem kann beseitigt werden, wenn ein Teil der Encoder-" +"Implementierung eingefroren wird, um die mit Rsync abgleichbare Ausgabe über " +"B-Versionsgrenzen hinweg stabil zu halten." + +#. type: SS +#: ../src/xz/xz.1:2410 +#, no-wrap +msgid "Embedded .xz decompressors" +msgstr "Eingebettete .xz-Dekompressoren" + +#. type: Plain text +#: ../src/xz/xz.1:2427 +msgid "" +"Embedded B<.xz> decompressor implementations like XZ Embedded don't " +"necessarily support files created with integrity I types other than " +"B and B. Since the default is B<--check=crc64>, you must use " +"B<--check=none> or B<--check=crc32> when creating files for embedded systems." +msgstr "" +"Eingebettete B<.xz>-Dekompressor-Implementierungen wie XZ Embedded " +"unterstützen nicht unbedingt Dateien, die mit anderen Integritätsprüfungen " +"(I-Typen) als B und B erzeugt wurden. Da B<--" +"check=crc64> die Voreinstellung ist, müssen Sie B<--check=none> oder B<--" +"check=crc32> verwenden, wenn Sie Dateien für eingebettete Systeme erstellen." + +#. type: Plain text +#: ../src/xz/xz.1:2437 +msgid "" +"Outside embedded systems, all B<.xz> format decompressors support all the " +"I types, or at least are able to decompress the file without verifying " +"the integrity check if the particular I is not supported." +msgstr "" +"Außerhalb eingebetteter Systeme unterstützen die Dekompressoren des B<.xz>-" +"Formats alle I-Typen oder sind mindestens in der Lage, die Datei zu " +"dekomprimieren, ohne deren Integrität zu prüfen, wenn die bestimmte " +"I nicht verfügbar ist." + +#. type: Plain text +#: ../src/xz/xz.1:2440 +msgid "" +"XZ Embedded supports BCJ filters, but only with the default start offset." +msgstr "" +"XZ Embedded unterstützt BCJ-Filter, aber nur mit dem vorgegebenen " +"Startversatz." + +#. type: SH +#: ../src/xz/xz.1:2441 +#, no-wrap +msgid "EXAMPLES" +msgstr "BEISPIELE" + +#. type: SS +#: ../src/xz/xz.1:2443 +#, no-wrap +msgid "Basics" +msgstr "Grundlagen" + +#. type: Plain text +#: ../src/xz/xz.1:2453 +msgid "" +"Compress the file I into I using the default compression level " +"(B<-6>), and remove I if compression is successful:" +msgstr "" +"Komprimiert die Datei I mit der Standard-Kompressionsstufe (B<-6>) zu " +"I und entfernt I nach erfolgreicher Kompression:" + +#. type: Plain text +#: ../src/xz/xz.1:2458 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2469 +msgid "" +"Decompress I into I and don't remove I even if " +"decompression is successful:" +msgstr "" +"I in I dekomprimieren und I selbst dann nicht löschen, " +"wenn die Dekompression erfolgreich war:" + +#. type: Plain text +#: ../src/xz/xz.1:2474 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2487 +msgid "" +"Create I 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):" +msgstr "" +"I 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):" + +#. type: Plain text +#: ../src/xz/xz.1:2492 +#, no-wrap +msgid "CW baz.tar.xz>\n" +msgstr "CW baz.tar.xz>\n" + +#. type: Plain text +#: ../src/xz/xz.1:2498 +msgid "" +"A mix of compressed and uncompressed files can be decompressed to standard " +"output with a single command:" +msgstr "" +"Eine Mischung aus komprimierten und unkomprimierten Dateien kann mit einem " +"einzelnen Befehl dekomprimiert in die Standardausgabe geschrieben werden:" + +#. type: Plain text +#: ../src/xz/xz.1:2503 +#, no-wrap +msgid "CW abcd.txt>\n" +msgstr "CW abcd.txt>\n" + +#. type: SS +#: ../src/xz/xz.1:2507 +#, no-wrap +msgid "Parallel compression of many files" +msgstr "Parallele Kompression von vielen Dateien" + +#. type: Plain text +#: ../src/xz/xz.1:2513 +msgid "" +"On GNU and *BSD, B(1) and B(1) can be used to parallelize " +"compression of many files:" +msgstr "" +"Auf GNU- und *BSD-Systemen können B(1) und B(1) zum " +"Parallelisieren der Kompression vieler Dateien verwendet werden:" + +#. type: Plain text +#: ../src/xz/xz.1:2519 +#, no-wrap +msgid "" +"CW\n" +msgstr "" +"CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2541 +msgid "" +"The B<-P> option to B(1) sets the number of parallel B " +"processes. The best value for the B<-n> option depends on how many files " +"there are to be compressed. If there are only a couple of files, the value " +"should probably be 1; with tens of thousands of files, 100 or even more may " +"be appropriate to reduce the number of B processes that B(1) will " +"eventually create." +msgstr "" +"Die Option B<-P> von B(1) legt die Anzahl der parallelen B-" +"Prozesse fest. Der beste Wert für die Option B<-n> hängt davon ab, wie viele " +"Dateien komprimiert werden sollen. Wenn es sich nur um wenige Dateien " +"handelt, sollte der Wert wahrscheinlich 1 sein; bei Zehntausenden von Dateien " +"kann 100 oder noch mehr angemessener sein, um die Anzahl der B-Prozesse " +"zu beschränken, die B(1) schließlich erzeugen wird." + +#. type: Plain text +#: ../src/xz/xz.1:2549 +msgid "" +"The option B<-T1> for B is there to force it to single-threaded mode, " +"because B(1) is used to control the amount of parallelization." +msgstr "" +"Die Option B<-T1> für B dient dazu, den Einzelthread-Modus zu erzwingen, " +"da B(1) zur Steuerung des Umfangs der Parallelisierung verwendet wird." + +#. type: SS +#: ../src/xz/xz.1:2550 +#, no-wrap +msgid "Robot mode" +msgstr "Roboter-Modus" + +#. type: Plain text +#: ../src/xz/xz.1:2553 +msgid "" +"Calculate how many bytes have been saved in total after compressing multiple " +"files:" +msgstr "" +"Berechnen, wie viel Byte nach der Kompression mehrerer Dateien insgesamt " +"eingespart wurden:" + +#. type: Plain text +#: ../src/xz/xz.1:2558 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2573 +msgid "" +"A script may want to know that it is using new enough B. The following " +"B(1) script checks that the version number of the B tool is at least " +"5.0.0. This method is compatible with old beta versions, which didn't " +"support the B<--robot> option:" +msgstr "" +"Ein Skript könnte abfragen wollen, ob es ein B verwendet, das aktuell " +"genug ist. Das folgende B(1)-Skript prüft, ob die Versionsnummer des " +"Dienstprogramms B mindestens 5.0.0 ist. Diese Methode ist zu alten Beta-" +"Versionen kompatibel, welche die Option B<--robot> nicht unterstützen:" + +#. type: Plain text +#: ../src/xz/xz.1:2582 +#, no-wrap +msgid "" +"CW /dev/null)\" ||\n" +" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n" +" echo \"Your xz is too old.\"\n" +"fi\n" +"unset XZ_VERSION LIBLZMA_VERSION>\n" +msgstr "" +"CW /dev/null)\" ||\n" +" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n" +" echo \"Ihre Version von Xz ist zu alt.\"\n" +"fi\n" +"unset XZ_VERSION LIBLZMA_VERSION>\n" + +#. type: Plain text +#: ../src/xz/xz.1:2589 +msgid "" +"Set a memory usage limit for decompression using B, but if a limit " +"has already been set, don't increase it:" +msgstr "" +"Eine Speicherbedarfsbegrenzung für die Dekompression mit B setzen, " +"aber eine bereits gesetzte Begrenzung nicht erhöhen:" + +#. type: Plain text +#: ../src/xz/xz.1:2599 +#, no-wrap +msgid "" +"CWE 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 "" +"CWE 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" + +#. type: Plain text +#: ../src/xz/xz.1:2609 +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 " +"potentially useful combinations of compression settings." +msgstr "" +"Der einfachste Anwendungsfall für benutzerdefinierte Filterketten ist die " +"Anpassung von LZMA2-Voreinstellungsstufen. Das kann nützlich sein, weil die " +"Voreinstellungen nur einen Teil der potenziell sinnvollen Kombinationen aus " +"Kompressionseinstellungen abdecken." + +#. type: Plain text +#: ../src/xz/xz.1:2617 +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 are the relevant parts collected from those two tables:" +msgstr "" +"Die KompCPU-Spalten der Tabellen aus den Beschreibungen der Optionen B<-0> … " +"B<-9> und B<--extreme> sind beim Anpassen der LZMA2-Voreinstellungen " +"nützlich. Diese sind die relevanten Teile aus diesen zwei Tabellen:" + +#. type: Plain text +#: ../src/xz/xz.1:2642 +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 would do, a " +"preset with a low CompCPU value (e.g. 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 " +"komprimieren wollen, als dies mit B geschehen würde, kann eine " +"Voreinstellung mit einem niedrigen KompCPU-Wert (zum Beispiel 1) dahingehend " +"angepasst werden, ein größeres Wörterbuch zu verwenden:" + +#. type: Plain text +#: ../src/xz/xz.1:2647 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2663 +msgid "" +"With certain files, the above command may be faster than B while " +"compressing significantly better. However, it must be emphasized that only " +"some files benefit from a big dictionary while keeping the CompCPU value " +"low. The most obvious situation, where a big dictionary can help a lot, is " +"an archive containing very similar files of at least a few megabytes each. " +"The dictionary size has to be significantly bigger than any individual file " +"to allow LZMA2 to take full advantage of the similarities between consecutive " +"files." +msgstr "" +"Mit bestimmten Dateien kann der obige Befehl schneller sein als B, " +"wobei die Kompression deutlich besser wird. Dennoch muss betont werden, dass " +"nur wenige Dateien von einem größeren Wörterbuch profitieren, wenn der " +"KompCPU-Wert niedrig bleibt. Der offensichtlichste Fall, in dem ein größeres " +"Wörterbuch sehr hilfreich sein kann, ist ein Archiv, das einander sehr " +"ähnliche Dateien enthält, die jeweils wenigstens einige Megabyte groß sind. " +"Das Wörterbuch muss dann deutlich größer sein als die einzelne Datei, damit " +"LZMA2 den größtmöglichen Vorteil aus den Ähnlichkeiten der aufeinander " +"folgenden Dateien zieht." + +#. type: Plain text +#: ../src/xz/xz.1:2670 +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 " +"use an even bigger dictionary than the 64 MiB that B would use:" +msgstr "" +"Wenn hoher Speicherbedarf für Kompression und Dekompression kein Problem ist " +"und die zu komprimierende Datei mindestens einige Hundert Megabyte groß ist, " +"kann es sinnvoll sein, ein noch größeres Wörterbuch zu verwenden, als die 64 " +"MiB, die mit B verwendet werden würden:" + +#. type: Plain text +#: ../src/xz/xz.1:2675 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2688 +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. " +"Remember that using a dictionary bigger than the size of the uncompressed " +"file is waste of memory, so the above command isn't useful for small files." +msgstr "" +"Die Verwendung von B<-vv> (B<--verbose --verbose>) wie im obigen Beispiel " +"kann nützlich sein, um den Speicherbedarf für Kompressor und Dekompressor zu " +"sehen. Denken Sie daran, dass ein Wörterbuch, das größer als die " +"unkomprimierte Datei ist, Speicherverschwendung wäre. Daher ist der obige " +"Befehl für kleine Dateien nicht sinnvoll." + +#. type: Plain text +#: ../src/xz/xz.1:2701 +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." +msgstr "" +"Manchmal spielt die Kompressionszeit keine Rolle, aber der Speicherbedarf bei " +"der Dekompression muss gering gehalten werden, zum Beispiel um die Datei auf " +"eingebetteten Systemen dekomprimieren zu können. Der folgende Befehl " +"verwendet B<-6e> (B<-6 --extreme>) als Basis und setzt die Wörterbuchgröße " +"auf nur 64\\ KiB. Die sich ergebende Datei kann mit XZ Embedded (aus diesem " +"Grund ist dort B<--check=crc32>) mit nur etwa 100\\ KiB Speicher " +"dekomprimiert werden." + +#. type: Plain text +#: ../src/xz/xz.1:2706 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2729 +msgid "" +"If you want to squeeze out as many bytes as possible, adjusting the number of " +"literal context bits (I) and number of position bits (I) can " +"sometimes help. Adjusting the number of literal position bits (I) might " +"help too, but usually I and I 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 (try also without " +"B):" +msgstr "" +"Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die Anpassung " +"der Anzahl der literalen Kontextbits (I) und der Anzahl der Positionsbits " +"(I) manchmal hilfreich sein. Auch die Anpassung der Anzahl der literalen " +"Positionsbits (I) könnte helfen, aber üblicherweise sind I und I " +"wichtiger. Wenn ein Quellcode-Archiv zum Beispiel hauptsächlich ASCII-Text " +"enthält, könnte ein Aufruf wie der folgende eine etwas kleinere Datei (etwa " +"0,1\\ %) ergeben als mit B (versuchen Sie es auch B):" + +#. type: Plain text +#: ../src/xz/xz.1:2734 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2742 +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:" +msgstr "" +"Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei " +"verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte " +"Bibliothek der Architekturen x86-32 oder x86-64 mit dem BCJ-Filter für x86 " +"komprimieren:" + +#. type: Plain text +#: ../src/xz/xz.1:2747 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2761 +msgid "" +"Note that the order of the filter options is significant. If B<--x86> is " +"specified after B<--lzma2>, B will give an error, because there cannot be " +"any filter after LZMA2, and also because the x86 BCJ filter cannot be used as " +"the last filter in the chain." +msgstr "" +"Beachten Sie, dass die Reihenfolge der Filteroptionen von Bedeutung ist. " +"Falls B<--x86> nach B<--lzma2> angegeben wird, gibt B einen Fehler aus, " +"weil nach LZMA2 kein weiterer Filter sein darf und auch weil der BCJ-Filter " +"für x86 nicht als letzter Filter in der Filterkette gesetzt werden darf." + +#. type: Plain text +#: ../src/xz/xz.1:2767 +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 " +"than simple delta but uses Deflate for the actual compression." +msgstr "" +"Der Delta-Filter zusammen mit LZMA2 kann bei Bitmap-Bildern gute Ergebnisse " +"liefern. Er sollte üblicherweise besser sein als PNG, welches zwar einige " +"fortgeschrittene Filter als ein simples delta bietet, aber für die " +"eigentliche Kompression »Deflate« verwendet." + +#. type: Plain text +#: ../src/xz/xz.1:2777 +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, and it " +"is also good to pass B 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 " +"muss so gesetzt werden, dass er der Anzahl der Bytes pro Pixel im Bild " +"entspricht. Zum Beispiel erfordert ein 24-Bit-RGB-Bitmap B, außerdem " +"ist es gut, B an LZMA2 zu übergeben, um die 3-Byte-Ausrichtung zu " +"berücksichtigen:" + +#. type: Plain text +#: ../src/xz/xz.1:2782 +#, no-wrap +msgid "CW\n" +msgstr "CW\n" + +#. type: Plain text +#: ../src/xz/xz.1:2790 +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." +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/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 +msgid "" +"B(1), B(1), B(1), B(1), B(1), " +"B(1), B(1), B<7z>(1)" +msgstr "" +"B(1), B(1), B(1), B(1), B(1), " +"B(1), B(1), B<7z>(1)" + +#. type: Plain text +#: ../src/xz/xz.1:2802 +msgid "XZ Utils: Ehttps://tukaani.org/xz/E" +msgstr "XZ Utils: Ehttps://tukaani.org/xz/E" + +#. type: Plain text +#: ../src/xz/xz.1:2804 ../src/xzdec/xzdec.1:146 +msgid "XZ Embedded: Ehttps://tukaani.org/xz/embedded.htmlE" +msgstr "XZ Embedded: Ehttps://tukaani.org/xz/embedded.htmlE" + +#. type: Plain text +#: ../src/xz/xz.1:2805 +msgid "LZMA SDK: Ehttp://7-zip.org/sdk.htmlE" +msgstr "LZMA-SDK: Ehttp://7-zip.org/sdk.htmlE" + +#. type: TH +#: ../src/xzdec/xzdec.1:7 +#, no-wrap +msgid "XZDEC" +msgstr "XZDEC" + +#. type: TH +#: ../src/xzdec/xzdec.1:7 +#, no-wrap +msgid "2017-04-19" +msgstr "19. April 2017" + +#. type: Plain text +#: ../src/xzdec/xzdec.1:10 +msgid "xzdec, lzmadec - Small .xz and .lzma decompressors" +msgstr "xzdec, lzmadec - Kleine Dekompressoren für .xz und .lzma" + +#. type: Plain text +#: ../src/xzdec/xzdec.1:14 +msgid "B [I] [I]" +msgstr "B [I] [I]" + +#. type: Plain text +#: ../src/xzdec/xzdec.1:18 +msgid "B [I] [I]" +msgstr "B [I] [I]" + +#. type: Plain text +#: ../src/xzdec/xzdec.1:44 +msgid "" +"B is a liblzma-based decompression-only tool for B<.xz> (and only B<." +"xz>) files. B is intended to work as a drop-in replacement for " +"B(1) in the most common situations where a script has been written to " +"use B (and possibly a few other commonly used " +"options) to decompress B<.xz> files. B is identical to B " +"except that B supports B<.lzma> files instead of B<.xz> files." +msgstr "" +"B ist ein auf Liblzma basierendes Nur-Dekompressionswerkzeug für B<." +"xz>-Dateien (und B für B<.xz>-Dateien). B ist als direkter Ersatz " +"für B(1) in jenen Situationen konzipiert, wo ein Skript B (und eventuelle einige andere höufig genutzte Optionen) zum " +"Dekomprimieren von B<.xz>-Dateien. B ist weitgehend identisch zu " +"B, mit der Ausnahme, dass B B<.lzma>-Dateien anstelle von B<." +"xz>-Dateien unterstützt." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:61 +msgid "" +"To reduce the size of the executable, B doesn't support multithreading " +"or localization, and doesn't read options from B and B " +"environment variables. B doesn't support displaying intermediate " +"progress information: sending B to B does nothing, but " +"sending B terminates the process instead of displaying progress " +"information." +msgstr "" +"Um die Größe der ausführbaren Datei zu reduzieren, unterstützt B weder " +"Multithreading noch Lokalisierung. Außerdem liest es keine Optionen aus den " +"Umgebungsvariablen B und B. B unterstützt keine " +"zwischenzeitlichen Fortschrittsinformationen: Das Senden von B an " +"B hat keine Auswirkungen, jedoch beendet B den Prozess, " +"anstatt Fortschrittsinformationen anzuzeigen." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:69 +msgid "" +"Ignored for B(1) compatibility. B supports only decompression." +msgstr "" +"ist zwecks Kompatibilität zu B(1) vorhanden; wird ignoriert. B " +"unterstützt nur Dekompression." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:76 +msgid "" +"Ignored for B(1) compatibility. B never creates or removes any " +"files." +msgstr "" +"ist zwecks Kompatibilität zu B(1) vorhanden; wird ignoriert. B " +"erzeugt oder entfernt niemals Dateien." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:83 +msgid "" +"Ignored for B(1) compatibility. B always writes the decompressed " +"data to standard output." +msgstr "" +"ist zwecks Kompatibilität zu B(1) vorhanden; wird ignoriert. B " +"schreibt die dekomprimierten Daten immer in die Standardausgabe." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:89 +msgid "" +"Specifying this once does nothing since B never displays any warnings " +"or notices. Specify this twice to suppress errors." +msgstr "" +"hat bei einmaliger Angabe keine Wirkung, da B niemals Warnungen oder " +"sonstige Meldungen anzeigt. Wenn Sie dies zweimal angeben, werden " +"Fehlermeldungen unterdrückt." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:96 +msgid "" +"Ignored for B(1) compatibility. B never uses the exit status 2." +msgstr "" +"ist zwecks Kompatibilität zu B(1) vorhanden; wird ignoriert. B " +"verwendet niemals den Exit-Status 2." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:99 +msgid "Display a help message and exit successfully." +msgstr "zeigt eine Hilfemeldung an und beendet das Programm erfolgreich." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:104 +msgid "Display the version number of B and liblzma." +msgstr "zeigt die Versionsnummer von B und liblzma an." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:108 +msgid "All was good." +msgstr "Alles ist in Ordnung." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:117 +msgid "" +"B doesn't have any warning messages like B(1) has, thus the exit " +"status 2 is not used by B." +msgstr "" +"B gibt keine Warnmeldungen wie B(1) aus, daher wird der Exit-" +"Status 2 von B nicht verwendet." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:131 +msgid "" +"Use B(1) instead of B or B for normal everyday use. " +"B or B are meant only for situations where it is important to " +"have a smaller decompressor than the full-featured B(1)." +msgstr "" +"Verwenden Sie B(1) anstelle von B oder B im normalen " +"täglichen Gebrauch. B oder B sind nur für Situationen " +"gedacht, in denen ein kleinerer Dekompressor statt des voll ausgestatteten " +"B(1) wichtig ist." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:143 +msgid "" +"B and B are not really that small. The size can be reduced " +"further by dropping features from liblzma at compile time, but that shouldn't " +"usually be done for executables distributed in typical non-embedded operating " +"system distributions. If you need a truly small B<.xz> decompressor, " +"consider using XZ Embedded." +msgstr "" +"B und B sind nicht wirklich extrem klein. Die Größe kann " +"durch Deaktivieren von Funktionen bei der Kompilierung von Liblzma weiter " +"verringert werden, aber das sollte nicht für ausführbare Dateien getan " +"werden, die in typischen Betriebssystemen ausgeliefert werden, außer in den " +"Distributionen für eingebettete Systeme. Wenn Sie einen wirklich winzigen " +"Dekompressor für B<.xz>-Dateien brauchen, sollten Sie stattdessen XZ Embedded " +"in Erwägung ziehen." + +#. type: Plain text +#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60 +msgid "B(1)" +msgstr "B(1)" + +#. type: TH +#: ../src/lzmainfo/lzmainfo.1:7 +#, no-wrap +msgid "LZMAINFO" +msgstr "LZMAINFO" + +#. type: TH +#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7 +#, no-wrap +msgid "2013-06-30" +msgstr "30. Juni 2013" + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:10 +msgid "lzmainfo - show information stored in the .lzma file header" +msgstr "lzmainfo - im .lzma-Dateikopf enthaltene Informationen anzeigen" + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:15 +msgid "B [B<--help>] [B<--version>] [I]" +msgstr "B [B<--help>] [B<--version>] [I]" + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:31 +msgid "" +"B shows information stored in the B<.lzma> file header. It reads " +"the first 13 bytes from the specified I, decodes the header, and prints " +"it to standard output in human readable format. If no I are given or " +"I is B<->, standard input is read." +msgstr "" +"B zeigt die im B<.lzma>-Dateikopf enthaltenen Informationen an. Es " +"liest die ersten 13 Bytes aus der angegebenen I, dekodiert den " +"Dateikopf und gibt das Ergebnis in die Standardausgabe in einem " +"menschenlesbaren Format aus. Falls keine Ien angegeben werden oder die " +"I als B<-> übergeben wird, dann wird aus der Standardeingabe gelesen." + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:40 +msgid "" +"Usually the most interesting information is the uncompressed size and the " +"dictionary size. Uncompressed size can be shown only if the file is in the " +"non-streamed B<.lzma> format variant. The amount of memory required to " +"decompress the file is a few dozen kilobytes plus the dictionary size." +msgstr "" +"In der Regel sind die unkomprimierte Größe der Daten und die Größe des " +"Wörterbuchs am bedeutsamsten. Die unkomprimierte Größe kann nur dann " +"angezeigt werden, wenn die Datei im B<.lzma>-Format kein Datenstrom ist. Die " +"Größe des für die Dekompression nötigen Speichers beträgt einige Dutzend " +"Kilobyte zuzüglich der Größe des Inhaltsverzeichnisses." + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:44 +msgid "" +"B is included in XZ Utils primarily for backward compatibility with " +"LZMA Utils." +msgstr "" +"B ist in den XZ-Dienstprogrammen hauptsächlich zur Kompatibilität " +"zu den LZMA-Dienstprogrammen enthalten." + +#. type: SH +#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:72 +#, no-wrap +msgid "BUGS" +msgstr "FEHLER" + +#. type: Plain text +#: ../src/lzmainfo/lzmainfo.1:59 +msgid "" +"B uses B while the correct suffix would be B (2^20 " +"bytes). This is to keep the output compatible with LZMA Utils." +msgstr "" +"B verwendet B, während das korrekte Suffix B (2^20 Bytes) " +"wäre. Damit wird die Kompatibilität zu den LZMA-Dienstprogrammen " +"gewährleistet." + +#. type: TH +#: ../src/scripts/xzdiff.1:9 +#, no-wrap +msgid "XZDIFF" +msgstr "XZDIFF" + +#. type: TH +#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 +#, no-wrap +msgid "2011-03-19" +msgstr "19. März 2011" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:12 +msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files" +msgstr "xzcmp, xzdiff, lzcmp, lzdiff - komprimierte Dateien vergleichen" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:15 +msgid "B [I] I [I]" +msgstr "B [I] I [I]" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:18 +msgid "B [I] I [I]" +msgstr "B [I] I [I]" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:21 +msgid "B [I] I [I]" +msgstr "B [I] I [I]" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:24 +msgid "B [I] I [I]" +msgstr "B [I] I [I]" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:58 +msgid "" +"B and B invoke B(1) or B(1) on files compressed " +"with B(1), B(1), B(1), B(1), or B(1). All " +"options specified are passed directly to B(1) or B(1). If only " +"one file is specified, then the files compared are I (which must have " +"a suffix of a supported compression format) and I from which the " +"compression format suffix has been stripped. If two files are specified, " +"then they are uncompressed if necessary and fed to B(1) or B(1). " +"The exit status from B(1) or B(1) is preserved." +msgstr "" +"Die Dienstprogramme B und B führen die Programme B(1) " +"beziehungsweise B(1) mit Dateien aus, die mittels B(1), B(1), " +"B(1), B(1) oder B(1) komprimiert wurden. Alle angegebenen " +"Optionen werden direkt an B(1) oder B(1) übergeben. Wird nur eine " +"Datei angegeben, wird diese I (die eine Endung entsprechend eines der " +"unterstützten Kompressionsformate haben muss) mit der I verglichen, " +"von der die Kompressionsformat-Endung entfernt wird. Werden zwei Dateien " +"angegeben, dann werden deren Inhalte (falls nötig, unkomprimiert) an " +"B(1) oder B(1) weitergeleitet. Der Exit-Status von B(1) oder " +"B(1) wird dabei bewahrt." + +#. type: Plain text +#: ../src/scripts/xzdiff.1:64 +msgid "" +"The names B and B are provided for backward compatibility with " +"LZMA Utils." +msgstr "" +"Die Namen B und B dienen der Abwärtskompatibilität zu den LZMA-" +"Dienstprogrammen." + +#. type: Plain text +#: ../src/scripts/xzdiff.1:72 +msgid "" +"B(1), B(1), B(1), B(1), B(1), B(1), " +"B(1)" +msgstr "" +"B(1), B(1), B(1), B(1), B(1), B(1), " +"B(1)" + +#. type: Plain text +#: ../src/scripts/xzdiff.1:77 +msgid "" +"Messages from the B(1) or B(1) programs refer to temporary " +"filenames instead of those specified." +msgstr "" +"Die Meldungen der Programme B(1) oder B(1) können auf temporäre " +"Dateinamen verweisen anstatt auf die tatsächlich angegebenen Dateinamen." + +#. type: TH +#: ../src/scripts/xzgrep.1:9 +#, no-wrap +msgid "XZGREP" +msgstr "XZGREP" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:12 +msgid "xzgrep - search compressed files for a regular expression" +msgstr "xzgrep - komprimierte Dateien nach einem regulären Ausdruck durchsuchen" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:18 +msgid "B [I] [B<-e>] I I..." +msgstr "B [I] [B<-e>] I I …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:21 +msgid "B ..." +msgstr "B …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:24 +msgid "B ..." +msgstr "B …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:27 +msgid "B ..." +msgstr "B …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:30 +msgid "B ..." +msgstr "B …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:33 +msgid "B ..." +msgstr "B …" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:48 +msgid "" +"B invokes B(1) on I which may be either uncompressed or " +"compressed with B(1), B(1), B(1), B(1), or " +"B(1). All options specified are passed directly to B(1)." +msgstr "" +"B wendet B(1) auf I an, die entweder unkomprimiert " +"oder mit B(1), B(1), B(1), B(1) oder B(1) " +"komprimiert sein können. Alle angegebenen Optionen werden direkt an " +"B(1) übergeben." + +#. type: Plain text +#: ../src/scripts/xzgrep.1:60 +msgid "" +"If no I is specified, then standard input is decompressed if necessary " +"and fed to B(1). When reading from standard input, B(1), " +"B(1), and B(1) compressed files are not supported." +msgstr "" +"Wenn keine I angegeben ist, wird die Standardeingabe dekomprimiert " +"(falls nötig) und an B übergeben. Beim Lesen aus der Standardeingabe " +"keine Dateien unterstützt, die mit B(1), B(1) oder B(1) " +"komprimiert sind." + +#. type: Plain text +#: ../src/scripts/xzgrep.1:79 +msgid "" +"If B is invoked as B or B then B(1) or " +"B(1) is used instead of B(1). The same applies to names " +"B, B, and B, which are provided for backward " +"compatibility with LZMA Utils." +msgstr "" +"Wenn B als B oder B aufgerufen wird, dann wird " +"B(1) oder B(1) anstelle von B(1) verwendet. Genauso " +"verhalten sich die Befehle B, B und B, die die " +"Abwärtskompatibilität zu den LZMA-Dienstprogrammen gewährleisten." + +#. type: TP +#: ../src/scripts/xzgrep.1:81 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/scripts/xzgrep.1:92 +msgid "" +"If the B environment variable is set, B uses it instead of " +"B(1), B(1), or B(1)." +msgstr "" +"Wenn die Umgebungsvariable B gesetzt ist, verwendet B deren " +"Inhalt anstelle von B(1), B(1) oder B(1)." + +#. type: Plain text +#: ../src/scripts/xzgrep.1:98 +msgid "B(1), B(1), B(1), B(1), B(1), B(1)" +msgstr "B(1), B(1), B(1), B(1), B(1), B(1)" + +#. type: TH +#: ../src/scripts/xzless.1:10 +#, no-wrap +msgid "XZLESS" +msgstr "XZLESS" + +#. type: TH +#: ../src/scripts/xzless.1:10 +#, no-wrap +msgid "2010-09-27" +msgstr "27. September 2010" + +#. type: Plain text +#: ../src/scripts/xzless.1:13 +msgid "xzless, lzless - view xz or lzma compressed (text) files" +msgstr "" +"xzless, lzless - mit xz oder lzma komprimierte (Text-)Dateien betrachten" + +#. type: Plain text +#: ../src/scripts/xzless.1:16 +msgid "B [I...]" +msgstr "B [I …]" + +#. type: Plain text +#: ../src/scripts/xzless.1:19 +msgid "B [I...]" +msgstr "B [I …]" + +#. type: Plain text +#: ../src/scripts/xzless.1:31 +msgid "" +"B is a filter that displays text from compressed files to a " +"terminal. It works on files compressed with B(1) or B(1). If no " +"I are given, B reads from standard input." +msgstr "" +"B ist ein Filter, der Text aus komprimierten Dateien in einem " +"Terminal anzeigt. Es funktioniert mit Dateien, die mit B(1) oder " +"B(1) komprimiert sind. Falls keine I angegeben sind, liest " +"B aus der Standardeingabe." + +#. type: Plain text +#: ../src/scripts/xzless.1:48 +msgid "" +"B uses B(1) to present its output. Unlike B, its " +"choice of pager cannot be altered by setting an environment variable. " +"Commands are based on both B(1) and B(1) and allow back and forth " +"movement and searching. See the B(1) manual for more information." +msgstr "" +"B verwendet B(1) zur Darstellung der Ausgabe. Im Gegensatz zu " +"B können Sie das zu verwendende Textanzeigeprogramm nicht durch " +"Setzen einer Umgebungsvariable ändern. Die Befehle basieren auf B(1) " +"und B(1) und ermöglichen Vorwärts- und Rückwärtssprünge sowie " +"Suchvorgänge. In der Handbuchseite zu B(1) finden Sie weiter " +"Information." + +#. type: Plain text +#: ../src/scripts/xzless.1:52 +msgid "" +"The command named B is provided for backward compatibility with LZMA " +"Utils." +msgstr "" +"Der Befehl B dient der Abwärtskompatibilität zu den LZMA-" +"Dienstprogrammen." + +#. type: TP +#: ../src/scripts/xzless.1:53 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/scripts/xzless.1:59 +msgid "" +"A list of characters special to the shell. Set by B unless it is " +"already set in the environment." +msgstr "" +"Dies enthält eine Zeichenliste mit Bezug zur Shell. Wenn diese Variable nicht " +"bereits gesetzt ist, wird sie durch B gesetzt." + +#. type: TP +#: ../src/scripts/xzless.1:59 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/scripts/xzless.1:65 +msgid "" +"Set to a command line to invoke the B(1) decompressor for preprocessing " +"the input files to B(1)." +msgstr "" +"Dies ist auf die Befehlszeile zum Aufruf von B(1) gesetzt, die zur " +"Vorverarbeitung der Eingabedateien für B(1) nötig ist." + +#. type: Plain text +#: ../src/scripts/xzless.1:69 +msgid "B(1), B(1), B(1), B(1)" +msgstr "B(1), B(1), B(1), B(1)" + +#. type: TH +#: ../src/scripts/xzmore.1:7 +#, no-wrap +msgid "XZMORE" +msgstr "XZMORE" + +#. type: Plain text +#: ../src/scripts/xzmore.1:10 +msgid "xzmore, lzmore - view xz or lzma compressed (text) files" +msgstr "xzmore, lzmore - mit xz oder lzma komprimierte (Text-)Dateien lesen" + +#. type: Plain text +#: ../src/scripts/xzmore.1:13 +msgid "B [I]" +msgstr "B [I]" + +#. type: Plain text +#: ../src/scripts/xzmore.1:16 +msgid "B [I]" +msgstr "B [I]" + +#. type: Plain text +#: ../src/scripts/xzmore.1:24 +msgid "" +"B is a filter which allows examination of B(1) or B(1) " +"compressed text files one screenful at a time on a soft-copy terminal." +msgstr "" +"B ist ein Filter zur seitenweisen Anzeige von Textdateien in einem " +"Terminal, die mit B(1) oder B(1) komprimiert wurden." + +#. type: Plain text +#: ../src/scripts/xzmore.1:33 +msgid "" +"To use a pager other than the default B set environment variable " +"B to the name of the desired program. The name B is provided " +"for backward compatibility with LZMA Utils." +msgstr "" +"Um ein anderes Textanzeigeprogramm als den voreingestellten B zu " +"verwenden, setzen Sie die Umgebungsvariable B auf das gewünschte " +"Programm. Der Name B dient der Abwärtskompatibilität zu den LZMA-" +"Dienstprogrammen." + +#. type: TP +#: ../src/scripts/xzmore.1:33 +#, no-wrap +msgid "B or B" +msgstr "B oder B" + +#. type: Plain text +#: ../src/scripts/xzmore.1:40 +msgid "" +"When the prompt --More--(Next file: I) is printed, this command causes " +"B to exit." +msgstr "" +"Wenn die Zeile --Mehr--(Nächste Datei: I) angezeigt wird, wird " +"B mit diesem Befehl beendet." + +#. type: TP +#: ../src/scripts/xzmore.1:40 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: ../src/scripts/xzmore.1:47 +msgid "" +"When the prompt --More--(Next file: I) is printed, this command causes " +"B to skip the next file and continue." +msgstr "" +"Wenn die Zeile --Mehr--(Nächste Datei: I) angezeigt wird, springt " +"B zur nächsten Datei und zeigt diese an." + +#. type: Plain text +#: ../src/scripts/xzmore.1:51 +msgid "" +"For list of keyboard commands supported while actually viewing the content of " +"a file, refer to manual of the pager you use, usually B(1)." +msgstr "" +"Eine Liste der bei der Betrachtung von Dateiinhalten verfügbaren " +"Tastaturbefehle finden Sie in der Handbuchseite des verwendeten " +"Textanzeigeprogramms, meist B(1)." + +#. type: Plain text +#: ../src/scripts/xzmore.1:55 +msgid "B(1), B(1), B(1), B(1)" +msgstr "B(1), B(1), B(1), B(1)" diff --git a/po4a/po4a.conf b/po4a/po4a.conf index 41a90fc2..2d4d742d 100644 --- a/po4a/po4a.conf +++ b/po4a/po4a.conf @@ -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] +[po4a_langs] de [po4a_paths] xz-man.pot $lang:$lang.po [type: man] ../src/xz/xz.1 $lang:man/$lang/xz.1 -- cgit v1.2.3 From bd09081bbdf552f730030d2fd0e5e39ccb3936af Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 15 Feb 2020 03:08:32 +0200 Subject: Build: Use AM_GNU_GETTEXT_REQUIRE_VERSION and require 0.19.6. This bumps the version requirement from 0.19 (from 2014) to 0.19.6 (2015). Using only the old AM_GNU_GETTEXT_VERSION results in old gettext infrastructure being placed in the package. By using both macros we get the latest gettext files while the other programs in the Autotools family can still see the old macro. --- configure.ac | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index c8f76e43..0915afc3 100644 --- a/configure.ac +++ b/configure.ac @@ -643,9 +643,13 @@ AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno]) # Checks for libraries. ############################################################################### +dnl Support for _REQUIRE_VERSION was added in gettext 0.19.6. If both +dnl _REQUIRE_VERSION and _VERSION are present, the _VERSION is ignored. +dnl We use both for compatibility with other programs in the Autotools family. echo echo "Initializing gettext:" -AM_GNU_GETTEXT_VERSION([0.19]) +AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6]) +AM_GNU_GETTEXT_VERSION([0.19.6]) AM_GNU_GETTEXT([external]) -- cgit v1.2.3 From 9294909861e6d22b32418467e0e988f953a82264 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 15 Feb 2020 15:07:11 +0200 Subject: Build: Bump Autoconf and Libtool version requirements. There is no specific reason for this other than blocking the most ancient versions. These are still old: Autoconf 2.69 (2012) Automake 1.12 (2012) gettext 0.19.6 (2015) Libtool 2.4 (2010) --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 0915afc3..2418e4b0 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ # of malloc(), stat(), or lstat(), since we don't use those functions in # a way that would cause the problems the autoconf macros check. -AC_PREREQ([2.64]) +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/]) @@ -628,7 +628,7 @@ AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno]) echo echo "Initializing Libtool:" -LT_PREREQ([2.2]) +LT_PREREQ([2.4]) LT_INIT([win32-dll]) LT_LANG([Windows Resource]) -- cgit v1.2.3 From dbd55a69e530fec9ae866aaf6c3ccc0b4daf1f1f Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 16 Feb 2020 11:18:28 +0200 Subject: sysdefs.h: Omit the conditionals around string.h and limits.h. string.h is used unconditionally elsewhere in the project and configure has always stopped if limits.h is missing, so these headers must have been always available even on the weirdest systems. --- src/common/sysdefs.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/common/sysdefs.h b/src/common/sysdefs.h index e056ca4a..b6918179 100644 --- a/src/common/sysdefs.h +++ b/src/common/sysdefs.h @@ -44,9 +44,7 @@ // Some pre-C99 systems have SIZE_MAX in limits.h instead of stdint.h. The // limits are also used to figure out some macros missing from pre-C99 systems. -#ifdef HAVE_LIMITS_H -# include -#endif +#include // Be more compatible with systems that have non-conforming inttypes.h. // We assume that int is 32-bit and that long is either 32-bit or 64-bit. @@ -153,9 +151,7 @@ typedef unsigned char _Bool; // 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. -#ifdef HAVE_STRING_H -# include -#endif +#include #ifdef HAVE_STRINGS_H # include -- cgit v1.2.3 From 641042e63f665f3231c2fd1241fd3dddda3fb313 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 20 Feb 2020 18:54:04 +0200 Subject: tuklib_exit: Add missing header. strerror() needs which happened to be included via tuklib_common.h -> tuklib_config.h -> sysdefs.h if HAVE_CONFIG_H was defined. This wasn't tested without config.h before so it had worked fine. --- src/common/tuklib_exit.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/tuklib_exit.c b/src/common/tuklib_exit.c index c393be64..aa55620e 100644 --- a/src/common/tuklib_exit.c +++ b/src/common/tuklib_exit.c @@ -14,6 +14,7 @@ #include #include +#include #include "tuklib_gettext.h" #include "tuklib_progname.h" -- cgit v1.2.3 From f772a1572f723e5dc7d2d32e1d4287ac7a0da55e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 21 Feb 2020 01:24:18 +0200 Subject: tuklib_integer.m4: Optimize the check order. The __builtin byteswapping is the preferred one so check for it first. --- m4/tuklib_integer.m4 | 56 +++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/m4/tuklib_integer.m4 b/m4/tuklib_integer.m4 index ae3c1f2a..30305100 100644 --- a/m4/tuklib_integer.m4 +++ b/m4/tuklib_integer.m4 @@ -7,7 +7,7 @@ # # Checks for tuklib_integer.h: # - Endianness -# - Does operating system provide byte swapping macros +# - 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 # @@ -22,13 +22,28 @@ AC_DEFUN_ONCE([TUKLIB_INTEGER], [ AC_REQUIRE([TUKLIB_COMMON]) AC_REQUIRE([AC_C_BIGENDIAN]) -AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break]) -# Even if we have byteswap.h, we may lack the specific macros/functions. -if test x$ac_cv_header_byteswap_h = xyes ; then - m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [ - AC_MSG_CHECKING([if FUNC is available]) - AC_LINK_IFELSE([AC_LANG_SOURCE([ +AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], + [[__builtin_bswap16(1); + __builtin_bswap32(1); + __builtin_bswap64(1);]])], +[ + AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1], + [Define to 1 if the GNU C extensions + __builtin_bswap16/32/64 are supported.]) + AC_MSG_RESULT([yes]) +], [ + AC_MSG_RESULT([no]) + + # Look for other byteswapping methods. + AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break]) + + # Even if we have byteswap.h we may lack the specific macros/functions. + if test x$ac_cv_header_byteswap_h = xyes ; then + m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [ + AC_MSG_CHECKING([if FUNC is available]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ #include int main(void) @@ -36,28 +51,15 @@ main(void) FUNC[](42); return 0; } - ])], [ - AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1], + ])], [ + AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1], [Define to 1 if] FUNC [is available.]) - AC_MSG_RESULT([yes]) - ], [AC_MSG_RESULT([no])]) - - ])dnl -fi + AC_MSG_RESULT([yes]) + ], [AC_MSG_RESULT([no])]) -AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported]) -AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], - [[__builtin_bswap16(1); - __builtin_bswap32(1); - __builtin_bswap64(1);]])], - [ - AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1], - [Define to 1 if the GNU C extensions - __builtin_bswap16/32/64 are supported.]) - AC_MSG_RESULT([yes]) - ], [ - AC_MSG_RESULT([no]) - ]) + ])dnl + fi +]) AC_MSG_CHECKING([if unaligned memory access should be used]) AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access], -- cgit v1.2.3 From b6314aa275b35c714e0a191d0b2e9b6106129ea9 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 21 Feb 2020 15:59:26 +0200 Subject: xz: Avoid unneeded access of a volatile variable. --- src/xz/signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xz/signals.c b/src/xz/signals.c index 56c1eb47..7daeddca 100644 --- a/src/xz/signals.c +++ b/src/xz/signals.c @@ -166,7 +166,7 @@ signals_exit(void) sigfillset(&sa.sa_mask); sa.sa_flags = 0; sigaction(sig, &sa, NULL); - raise(exit_signal); + raise(sig); #endif } -- cgit v1.2.3 From c2cc64d78c098834231f9cfd7d852c9cd8950d74 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 21 Feb 2020 16:10:44 +0200 Subject: xz: Silence a warning when sig_atomic_t is long int. It can be true at least on z/OS. --- src/xz/signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xz/signals.c b/src/xz/signals.c index 7daeddca..7aef463c 100644 --- a/src/xz/signals.c +++ b/src/xz/signals.c @@ -152,7 +152,7 @@ signals_unblock(void) extern void signals_exit(void) { - const int sig = exit_signal; + const int sig = (int)exit_signal; if (sig != 0) { #if defined(TUKLIB_DOSLIKE) || defined(__VMS) -- cgit v1.2.3 From 6117955af0b9cef5acde7859e86f773692b5f43c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 21 Feb 2020 17:01:15 +0200 Subject: Build: Add visibility.m4 from gnulib. Appears that this file used to get included as a side effect of gettext. After the change to gettext version requirements this file no longer got copied to the package and so the build was broken. --- m4/.gitignore | 1 - m4/visibility.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 m4/visibility.m4 diff --git a/m4/.gitignore b/m4/.gitignore index 18d4a4f2..815e14ce 100644 --- a/m4/.gitignore +++ b/m4/.gitignore @@ -33,7 +33,6 @@ stdint_h.m4 threadlib.m4 uintmax_t.m4 ulonglong.m4 -visibility.m4 wchar_t.m4 wint_t.m4 xsize.m4 diff --git a/m4/visibility.m4 b/m4/visibility.m4 new file mode 100644 index 00000000..9f493bab --- /dev/null +++ b/m4/visibility.m4 @@ -0,0 +1,77 @@ +# visibility.m4 serial 6 +dnl Copyright (C) 2005, 2008, 2010-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 From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl Mac OS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_CACHE_CHECK([whether the -Werror option is usable], + [gl_cv_cc_vis_werror], + [gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS" + ]) + dnl Now check whether visibility declarations are supported. + AC_CACHE_CHECK([for simple visibility declarations], + [gl_cv_cc_visibility], + [gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS" + ]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) -- cgit v1.2.3 From fb9cada7cfade1156d6277717280e05b5cd342d6 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 21 Feb 2020 17:40:02 +0200 Subject: liblzma: Add more uses of lzma_memcmplen() to the normal mode of LZMA. This gives a tiny encoder speed improvement. This could have been done in 2014 after the commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 but it was forgotten. --- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/liblzma/lzma/lzma_encoder_optimum_normal.c b/src/liblzma/lzma/lzma_encoder_optimum_normal.c index 59f77343..101c8d47 100644 --- a/src/liblzma/lzma/lzma_encoder_optimum_normal.c +++ b/src/liblzma/lzma/lzma_encoder_optimum_normal.c @@ -636,9 +636,10 @@ helper2(lzma_lzma1_encoder *coder, uint32_t *reps, const uint8_t *buf, uint32_t len_test_2 = len_test + 1; const uint32_t limit = my_min(buf_avail_full, len_test_2 + nice_len); - for (; len_test_2 < limit - && buf[len_test_2] == buf_back[len_test_2]; - ++len_test_2) ; + // NOTE: len_test_2 may be greater than limit so the call to + // lzma_memcmplen() must be done conditionally. + if (len_test_2 < limit) + len_test_2 = lzma_memcmplen(buf, buf_back, len_test_2, limit); len_test_2 -= len_test + 1; @@ -732,9 +733,12 @@ helper2(lzma_lzma1_encoder *coder, uint32_t *reps, const uint8_t *buf, const uint32_t limit = my_min(buf_avail_full, len_test_2 + nice_len); - for (; len_test_2 < limit && - buf[len_test_2] == buf_back[len_test_2]; - ++len_test_2) ; + // NOTE: len_test_2 may be greater than limit + // so the call to lzma_memcmplen() must be + // done conditionally. + if (len_test_2 < limit) + len_test_2 = lzma_memcmplen(buf, buf_back, + len_test_2, limit); len_test_2 -= len_test + 1; -- cgit v1.2.3 From ac35c9585fb734b7a19785d490c152e0b8cd4663 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 22 Feb 2020 14:15:07 +0200 Subject: Use defined(__GNUC__) before __GNUC__ in preprocessor lines. This should silence the equivalent of -Wundef in compilers that don't define __GNUC__. --- src/common/sysdefs.h | 3 ++- src/liblzma/api/lzma.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/sysdefs.h b/src/common/sysdefs.h index b6918179..df7ecf40 100644 --- a/src/common/sysdefs.h +++ b/src/common/sysdefs.h @@ -189,7 +189,8 @@ typedef unsigned char _Bool; # define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) #endif -#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4 +#if defined(__GNUC__) \ + && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4) # define lzma_attr_alloc_size(x) __attribute__((__alloc_size__(x))) #else # define lzma_attr_alloc_size(x) diff --git a/src/liblzma/api/lzma.h b/src/liblzma/api/lzma.h index aa88e424..122dab80 100644 --- a/src/liblzma/api/lzma.h +++ b/src/liblzma/api/lzma.h @@ -224,7 +224,8 @@ # else # define lzma_nothrow throw() # endif -# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) +# elif defined(__GNUC__) && (__GNUC__ > 3 \ + || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) # define lzma_nothrow __attribute__((__nothrow__)) # else # define lzma_nothrow @@ -241,7 +242,7 @@ * break anything if these are sometimes enabled and sometimes not, only * affects warnings and optimizations. */ -#if __GNUC__ >= 3 +#if defined(__GNUC__) && __GNUC__ >= 3 # ifndef lzma_attribute # define lzma_attribute(attr) __attribute__(attr) # endif -- cgit v1.2.3 From 901eb4a8c992354c3ea482f5bad60a1f8ad6fcc8 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Feb 2020 23:01:00 +0200 Subject: liblzma: Remove unneeded from fastpos_tablegen.c. This file only generates fastpos_table.c. It isn't built as a part of liblzma. --- src/liblzma/lzma/fastpos_tablegen.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/liblzma/lzma/fastpos_tablegen.c b/src/liblzma/lzma/fastpos_tablegen.c index c97e6f41..d4484c82 100644 --- a/src/liblzma/lzma/fastpos_tablegen.c +++ b/src/liblzma/lzma/fastpos_tablegen.c @@ -11,7 +11,6 @@ // /////////////////////////////////////////////////////////////////////////////// -#include #include #include #include "fastpos.h" -- cgit v1.2.3 From c8853b31545db7bd0551be85949624b1261efd47 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 24 Feb 2020 23:37:07 +0200 Subject: Update m4/.gitignore. --- m4/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/m4/.gitignore b/m4/.gitignore index 815e14ce..985c2800 100644 --- a/m4/.gitignore +++ b/m4/.gitignore @@ -4,6 +4,7 @@ fcntl-o.m4 gettext.m4 glibc2.m4 glibc21.m4 +host-cpu-c-abi.m4 iconv.m4 intdiv0.m4 intl.m4 -- cgit v1.2.3 From 9acc6abea1552803c74c1486fbb10af119550772 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Thu, 27 Feb 2020 20:24:27 +0200 Subject: Build: Add support for --no-po4a option to autogen.sh. Normally, if po4a isn't available, autogen.sh will return with non-zero exit status. The option --no-po4a can be useful when one knows that po4a isn't available but wants autogen.sh to still return with zero exit status. --- autogen.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/autogen.sh b/autogen.sh index fb8d983f..020c365c 100755 --- a/autogen.sh +++ b/autogen.sh @@ -21,4 +21,13 @@ ${AUTOMAKE:-automake} -acf --foreign # Generate the translated man pages if the "po4a" tool is available. # This is *NOT* done by "autoreconf -fi" or when "make" is run. -cd po4a && sh update-po +# +# 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 + cd po4a + sh update-po +fi + +exit 0 -- cgit v1.2.3 From 1acc48794364606c9091cae6fa56db75a1325114 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 13:05:29 +0200 Subject: Build: Add very limited experimental CMake support. This version matches CMake files in the master branch (commit 265daa873c0d871f5f23f9b56e133a6f20045a0a) except that this omits two source files that aren't in v5.2 and in the beginning of CMakeLists.txt the first paragraph in the comment is slightly different to point out possible issues in building shared liblzma. --- CMakeLists.txt | 659 ++++++++++++++++++++++++++++++++++++++++++++ cmake/tuklib_common.cmake | 49 ++++ cmake/tuklib_cpucores.cmake | 175 ++++++++++++ cmake/tuklib_integer.cmake | 102 +++++++ cmake/tuklib_mbstr.cmake | 20 ++ cmake/tuklib_physmem.cmake | 150 ++++++++++ cmake/tuklib_progname.cmake | 19 ++ 7 files changed, 1174 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/tuklib_common.cmake create mode 100644 cmake/tuklib_cpucores.cmake create mode 100644 cmake/tuklib_integer.cmake create mode 100644 cmake/tuklib_mbstr.cmake create mode 100644 cmake/tuklib_physmem.cmake create mode 100644 cmake/tuklib_progname.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..34c6aca0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,659 @@ +############################################################################# +# +# Very limited CMake support for building some parts of XZ Utils +# +# Building static liblzma with MSVC should work. Building shared liblzma.dll +# with MSVC may or may not work (building liblzma_w32res.rc might be broken). +# Building liblzma on a few other platforms should work too but it +# is somewhat experimental and not as portable as using ./configure. +# +# On some platforms this builds also xz and xzdec, but these are +# highly experimental and meant for testing only: +# - No large file support on those 32-bit platforms that need it +# - No replacement getopt_long(), libc must have it +# - No sandboxing support +# - No translations +# - No xz symlinks are installed +# +# Other missing things: +# - No xzgrep or other scripts or their symlinks +# - No tests (no test failures either!) +# +# NOTE: Even if the code compiles without warnings, the end result may be +# different than via ./configure. Specifically, the list of #defines +# may be different (if so, probably this CMakeLists.txt got them wrong). +# +# This file provides the following installation components (if you only +# need liblzma, install only its components!): +# - liblzma_Runtime +# - liblzma_Development +# - xz (on some platforms only) +# - xzdec (on some platforms only) +# +# To find the target liblzma::liblzma from other packages, use the CONFIG +# option with find_package() to avoid a conflict with the FindLibLZMA module +# with case-insensitive file systems. For example, to require liblzma 5.2.5 +# or a newer compatible version: +# +# find_package(liblzma 5.2.5 REQUIRED CONFIG) +# target_link_libraries(my_application liblzma::liblzma) +# +############################################################################# +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# +############################################################################# + +cmake_minimum_required(VERSION 3.13...3.16 FATAL_ERROR) + +include(CheckSymbolExists) +include(CheckStructHasMember) +include(cmake/tuklib_integer.cmake) +include(cmake/tuklib_cpucores.cmake) +include(cmake/tuklib_physmem.cmake) +include(cmake/tuklib_progname.cmake) +include(cmake/tuklib_mbstr.cmake) + +# Get the package version from version.h into XZ_VERSION variable. +file(READ src/liblzma/api/lzma/version.h XZ_VERSION) +string(REGEX REPLACE +"^.*\n\ +#define LZMA_VERSION_MAJOR ([0-9]+)\n\ +#define LZMA_VERSION_MINOR ([0-9]+)\n\ +#define LZMA_VERSION_PATCH ([0-9]+)\n\ +.*$" + "\\1.\\2.\\3" XZ_VERSION "${XZ_VERSION}") + +# Among other things, this gives us variables xz_VERSION and xz_VERSION_MAJOR. +project(xz VERSION "${XZ_VERSION}" LANGUAGES C) + +# Definitions common to all targets: +add_compile_definitions( + # Package info: + PACKAGE_NAME="XZ Utils" + PACKAGE_BUGREPORT="lasse.collin@tukaani.org" + PACKAGE_URL="https://tukaani.org/xz/" + + # Features: + HAVE_CHECK_CRC32 + HAVE_CHECK_CRC64 + HAVE_CHECK_SHA256 + HAVE_DECODERS + HAVE_DECODER_ARM + HAVE_DECODER_ARMTHUMB + HAVE_DECODER_DELTA + HAVE_DECODER_IA64 + HAVE_DECODER_LZMA1 + HAVE_DECODER_LZMA2 + HAVE_DECODER_POWERPC + HAVE_DECODER_SPARC + HAVE_DECODER_X86 + HAVE_ENCODERS + HAVE_ENCODER_ARM + HAVE_ENCODER_ARMTHUMB + HAVE_ENCODER_DELTA + HAVE_ENCODER_IA64 + HAVE_ENCODER_LZMA1 + HAVE_ENCODER_LZMA2 + HAVE_ENCODER_POWERPC + HAVE_ENCODER_SPARC + HAVE_ENCODER_X86 + HAVE_MF_BT2 + HAVE_MF_BT3 + HAVE_MF_BT4 + HAVE_MF_HC3 + HAVE_MF_HC4 + + # Standard headers and types are available: + HAVE_STDBOOL_H + HAVE__BOOL + HAVE_STDINT_H + HAVE_INTTYPES_H + + # Disable assert() checks when no build type has been specified. Non-empty + # build types like "Release" and "Debug" handle this by default. + $<$:NDEBUG> +) + +# _GNU_SOURCE and such definitions. This specific macro is special since +# it also adds the definitions to CMAKE_REQUIRED_DEFINITIONS. +tuklib_use_system_extensions(ALL) + +# This is needed by liblzma and xz. +tuklib_integer(ALL) + +# Check for clock_gettime(). Do this before checking for threading so +# that we know there if CLOCK_MONOTONIC is available. +if(NOT WIN32 AND NOT DEFINED CACHE{HAVE_CLOCK_GETTIME}) + check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME) + if(NOT HAVE_CLOCK_GETTIME) + # With glibc <= 2.17 or Solaris 10 this needs librt. + unset(HAVE_CLOCK_GETTIME CACHE) + + list(INSERT CMAKE_REQUIRED_LIBRARIES 0 rt) + check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME) + + # If it was found now, add it to all targets and keep it + # in CMAKE_REQUIRED_LIBRARIES for further tests too. + if(HAVE_CLOCK_GETTIME) + link_libraries(rt) + else() + list(REMOVE_AT CMAKE_REQUIRED_LIBRARIES 0) + endif() + endif() + if(HAVE_CLOCK_GETTIME) + # Check if CLOCK_MONOTONIC is available for clock_gettime(). + check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_DECL_CLOCK_MONOTONIC) + + # HAVE_DECL_CLOCK_MONOTONIC should always be defined to 0 or 1 + # when clock_gettime is available. + add_compile_definitions( + HAVE_CLOCK_GETTIME + HAVE_DECL_CLOCK_MONOTONIC=$ + ) + endif() +endif() + +# Threading support: +set(THREADS_PREFER_PTHREAD_FLAG TRUE) +find_package(Threads REQUIRED) +if(CMAKE_USE_WIN32_THREADS_INIT) + add_compile_definitions(MYTHREAD_VISTA) +else() + add_compile_definitions(MYTHREAD_POSIX) + + # Check if pthread_condattr_setclock() exists to use CLOCK_MONOTONIC. + if(HAVE_DECL_CLOCK_MONOTONIC) + list(INSERT CMAKE_REQUIRED_LIBRARIES 0 "${CMAKE_THREAD_LIBS_INIT}") + check_symbol_exists(pthread_condattr_setclock pthread.h + HAVE_PTHREAD_CONDATTR_SETCLOCK) + tuklib_add_definition_if(ALL HAVE_PTHREAD_CONDATTR_SETCLOCK) + endif() +endif() + +# Options for new enough GCC or Clang on any arch or operating system: +if(CMAKE_C_COMPILER_ID MATCHES GNU|Clang) + # configure.ac has a long list but it won't be copied here: + add_compile_options(-Wall -Wextra) +endif() + + +############################################################################# +# liblzma +############################################################################# + +option(BUILD_SHARED_LIBS "Build liblzma as a shared library instead of static") + +add_library(liblzma + src/common/mythread.h + src/common/sysdefs.h + src/common/tuklib_common.h + src/common/tuklib_config.h + src/common/tuklib_cpucores.c + src/common/tuklib_cpucores.h + src/common/tuklib_integer.h + src/common/tuklib_physmem.c + src/common/tuklib_physmem.h + src/liblzma/api/lzma.h + src/liblzma/api/lzma/base.h + src/liblzma/api/lzma/bcj.h + src/liblzma/api/lzma/block.h + src/liblzma/api/lzma/check.h + src/liblzma/api/lzma/container.h + src/liblzma/api/lzma/delta.h + src/liblzma/api/lzma/filter.h + src/liblzma/api/lzma/hardware.h + src/liblzma/api/lzma/index.h + src/liblzma/api/lzma/index_hash.h + src/liblzma/api/lzma/lzma12.h + src/liblzma/api/lzma/stream_flags.h + src/liblzma/api/lzma/version.h + src/liblzma/api/lzma/vli.h + src/liblzma/check/check.c + src/liblzma/check/check.h + src/liblzma/check/crc32_fast.c + src/liblzma/check/crc32_table.c + src/liblzma/check/crc32_table_be.h + src/liblzma/check/crc32_table_le.h + src/liblzma/check/crc64_fast.c + src/liblzma/check/crc64_table.c + src/liblzma/check/crc64_table_be.h + src/liblzma/check/crc64_table_le.h + src/liblzma/check/crc_macros.h + src/liblzma/check/sha256.c + src/liblzma/common/alone_decoder.c + src/liblzma/common/alone_decoder.h + src/liblzma/common/alone_encoder.c + src/liblzma/common/auto_decoder.c + src/liblzma/common/block_buffer_decoder.c + src/liblzma/common/block_buffer_encoder.c + src/liblzma/common/block_buffer_encoder.h + src/liblzma/common/block_decoder.c + src/liblzma/common/block_decoder.h + src/liblzma/common/block_encoder.c + src/liblzma/common/block_encoder.h + src/liblzma/common/block_header_decoder.c + src/liblzma/common/block_header_encoder.c + src/liblzma/common/block_util.c + src/liblzma/common/common.c + src/liblzma/common/common.h + src/liblzma/common/easy_buffer_encoder.c + src/liblzma/common/easy_decoder_memusage.c + src/liblzma/common/easy_encoder.c + src/liblzma/common/easy_encoder_memusage.c + src/liblzma/common/easy_preset.c + src/liblzma/common/easy_preset.h + src/liblzma/common/filter_buffer_decoder.c + src/liblzma/common/filter_buffer_encoder.c + src/liblzma/common/filter_common.c + src/liblzma/common/filter_common.h + src/liblzma/common/filter_decoder.c + src/liblzma/common/filter_decoder.h + src/liblzma/common/filter_encoder.c + src/liblzma/common/filter_encoder.h + src/liblzma/common/filter_flags_decoder.c + src/liblzma/common/filter_flags_encoder.c + src/liblzma/common/hardware_cputhreads.c + src/liblzma/common/hardware_physmem.c + src/liblzma/common/index.c + src/liblzma/common/index.h + src/liblzma/common/index_decoder.c + src/liblzma/common/index_encoder.c + src/liblzma/common/index_encoder.h + src/liblzma/common/index_hash.c + src/liblzma/common/memcmplen.h + src/liblzma/common/outqueue.c + src/liblzma/common/outqueue.h + src/liblzma/common/stream_buffer_decoder.c + src/liblzma/common/stream_buffer_encoder.c + src/liblzma/common/stream_decoder.c + src/liblzma/common/stream_decoder.h + src/liblzma/common/stream_encoder.c + src/liblzma/common/stream_encoder_mt.c + src/liblzma/common/stream_flags_common.c + src/liblzma/common/stream_flags_common.h + src/liblzma/common/stream_flags_decoder.c + src/liblzma/common/stream_flags_encoder.c + src/liblzma/common/vli_decoder.c + src/liblzma/common/vli_encoder.c + src/liblzma/common/vli_size.c + src/liblzma/delta/delta_common.c + src/liblzma/delta/delta_common.h + src/liblzma/delta/delta_decoder.c + src/liblzma/delta/delta_decoder.h + src/liblzma/delta/delta_encoder.c + src/liblzma/delta/delta_encoder.h + src/liblzma/delta/delta_private.h + src/liblzma/lz/lz_decoder.c + src/liblzma/lz/lz_decoder.h + src/liblzma/lz/lz_encoder.c + src/liblzma/lz/lz_encoder.h + src/liblzma/lz/lz_encoder_hash.h + src/liblzma/lz/lz_encoder_hash_table.h + src/liblzma/lz/lz_encoder_mf.c + src/liblzma/lzma/fastpos.h + src/liblzma/lzma/fastpos_table.c + src/liblzma/lzma/lzma2_decoder.c + src/liblzma/lzma/lzma2_decoder.h + src/liblzma/lzma/lzma2_encoder.c + src/liblzma/lzma/lzma2_encoder.h + src/liblzma/lzma/lzma_common.h + src/liblzma/lzma/lzma_decoder.c + src/liblzma/lzma/lzma_decoder.h + src/liblzma/lzma/lzma_encoder.c + src/liblzma/lzma/lzma_encoder.h + src/liblzma/lzma/lzma_encoder_optimum_fast.c + src/liblzma/lzma/lzma_encoder_optimum_normal.c + src/liblzma/lzma/lzma_encoder_presets.c + src/liblzma/lzma/lzma_encoder_private.h + src/liblzma/rangecoder/price.h + src/liblzma/rangecoder/price_table.c + src/liblzma/rangecoder/range_common.h + src/liblzma/rangecoder/range_decoder.h + src/liblzma/rangecoder/range_encoder.h + src/liblzma/simple/arm.c + src/liblzma/simple/armthumb.c + src/liblzma/simple/ia64.c + src/liblzma/simple/powerpc.c + src/liblzma/simple/simple_coder.c + src/liblzma/simple/simple_coder.h + src/liblzma/simple/simple_decoder.c + src/liblzma/simple/simple_decoder.h + src/liblzma/simple/simple_encoder.c + src/liblzma/simple/simple_encoder.h + src/liblzma/simple/simple_private.h + src/liblzma/simple/sparc.c + src/liblzma/simple/x86.c +) + +target_include_directories(liblzma PRIVATE + src/liblzma/api + src/liblzma/common + src/liblzma/check + src/liblzma/lz + src/liblzma/rangecoder + src/liblzma/lzma + src/liblzma/delta + src/liblzma/simple + src/common +) + +target_link_libraries(liblzma Threads::Threads) + +# Put the tuklib functions under the lzma_ namespace. +target_compile_definitions(liblzma PRIVATE TUKLIB_SYMBOL_PREFIX=lzma_) +tuklib_cpucores(liblzma) +tuklib_physmem(liblzma) + +# While liblzma can be built without tuklib_cpucores or tuklib_physmem +# modules, the liblzma API functions lzma_cputhreads() and lzma_physmem() +# will then be useless (which isn't too bad but still unfortunate). Since +# I expect the CMake-based builds to be only used on systems that are +# supported by these tuklib modules, problems with these tuklib modules +# are considered a hard error for now. This hopefully helps to catch bugs +# in the CMake versions of the tuklib checks. +if(NOT TUKLIB_CPUCORES_FOUND OR NOT TUKLIB_PHYSMEM_FOUND) + # Use SEND_ERROR instead of FATAL_ERROR. If someone reports a bug, + # seeing the results of the remaining checks can be useful too. + message(SEND_ERROR + "tuklib_cpucores() or tuklib_physmem() failed. " + "Unless you really are building for a system where these " + "modules are not supported (unlikely), this is a bug in the " + "included cmake/tuklib_*.cmake files that should be fixed. " + "To build anyway, edit this CMakeLists.txt to ignore this error.") +endif() + +# immintrin.h: +include(CheckIncludeFile) +check_include_file(immintrin.h HAVE_IMMINTRIN_H) +if(HAVE_IMMINTRIN_H) + target_compile_definitions(liblzma PRIVATE HAVE_IMMINTRIN_H) + + # SSE2 intrinsics: + include(CheckCSourceCompiles) + check_c_source_compiles(" + #include + int main(void) + { + __m128i x = { 0 }; + _mm_movemask_epi8(x); + return 0; + } + " + HAVE__MM_MOVEMASK_EPI8) + tuklib_add_definition_if(liblzma HAVE__MM_MOVEMASK_EPI8) +endif() + +# Support -fvisiblity=hidden when building shared liblzma. +# These lines do nothing on Windows (even under Cygwin). +# HAVE_VISIBILITY should always be defined to 0 or 1. +if(BUILD_SHARED_LIBS) + set_target_properties(liblzma PROPERTIES C_VISIBILITY_PRESET hidden) + target_compile_definitions(liblzma PRIVATE HAVE_VISIBILITY=1) +else() + target_compile_definitions(liblzma PRIVATE HAVE_VISIBILITY=0) +endif() + +if(WIN32) + if(BUILD_SHARED_LIBS) + # Add the Windows resource file for liblzma.dll. + target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc) + + # Export the public API symbols with __declspec(dllexport). + target_compile_definitions(liblzma PRIVATE DLL_EXPORT) + else() + # Disable __declspec(dllimport) when linking against static liblzma. + target_compile_definitions(liblzma INTERFACE LZMA_API_STATIC) + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "^Linux$|^FreeBSD$") + # Symbol versioning for shared liblzma. This doesn't affect static builds. + target_link_options(liblzma PRIVATE + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map" + ) + set_target_properties(liblzma PROPERTIES + LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map" + LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc" + ) +endif() + +set_target_properties(liblzma PROPERTIES + # At least for now the package versioning matches the rules used for + # shared library versioning (excluding development releases) so it is + # fine to use the package version here. + SOVERSION "${xz_VERSION_MAJOR}" + VERSION "${xz_VERSION}" + + # It's liblzma.so or liblzma.dll, not libliblzma.so or lzma.dll. + # Avoid the name lzma.dll because it would conflict with LZMA SDK. + PREFIX "" +) + +# Create liblzmaConfigVersion.cmake. +# +# FIXME: SameMajorVersion is correct for stable releases but it is wrong +# for development releases where each release may have incompatible changes. +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/liblzmaConfigVersion.cmake" + VERSION "${liblzma_VERSION}" + COMPATIBILITY SameMajorVersion) + +# Create liblzmaConfig.cmake. +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/liblzmaConfig.cmake" +"include(CMakeFindDependencyMacro) +set(THREADS_PREFER_PTHREAD_FLAG TRUE) +find_dependency(Threads) +include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzmaTargets.cmake\") +") + +# Set CMAKE_INSTALL_LIBDIR and friends. +include(GNUInstallDirs) + +# Install the library binary. The INCLUDES specifies the include path that +# is exported for other projects to use but it doesn't install any files. +install(TARGETS liblzma EXPORT liblzmaTargets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT liblzma_Runtime + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + COMPONENT liblzma_Runtime + NAMELINK_COMPONENT liblzma_Development + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + COMPONENT liblzma_Development + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + +# Install the liblzma API headers. These use a subdirectory so +# this has to be done as a separate step. +install(DIRECTORY src/liblzma/api/ + COMPONENT liblzma_Development + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + FILES_MATCHING PATTERN "*.h") + +# Install the CMake files that other packages can use to find liblzma. +set(liblzma_INSTALL_CMAKEDIR + "${CMAKE_INSTALL_LIBDIR}/cmake/liblzma" + CACHE STRING "Path to liblzma's .cmake files") + +install(EXPORT liblzmaTargets + NAMESPACE liblzma:: + FILE liblzmaTargets.cmake + DESTINATION "${liblzma_INSTALL_CMAKEDIR}" + COMPONENT liblzma_Development) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblzmaConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/liblzmaConfigVersion.cmake" + DESTINATION "${liblzma_INSTALL_CMAKEDIR}" + COMPONENT liblzma_Development) + + +############################################################################# +# getopt_long +############################################################################# + +# The command line tools needs this. +check_symbol_exists(getopt_long getopt.h HAVE_GETOPT_LONG) + + +############################################################################# +# xzdec +############################################################################# + +if(HAVE_GETOPT_LONG) + add_executable(xzdec + src/common/sysdefs.h + src/common/tuklib_common.h + src/common/tuklib_config.h + src/common/tuklib_exit.c + src/common/tuklib_exit.h + src/common/tuklib_gettext.h + src/common/tuklib_progname.c + src/common/tuklib_progname.h + src/xzdec/xzdec.c + ) + + target_include_directories(xzdec PRIVATE + src/common + src/liblzma/api + ) + + target_link_libraries(xzdec PRIVATE liblzma) + + tuklib_progname(xzdec) + + install(TARGETS xzdec + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT xzdec) + + if(UNIX) + install(FILES src/xzdec/xzdec.1 + DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" + COMPONENT xzdec) + endif() +endif() + + +############################################################################# +# xz +############################################################################# + +if(NOT MSVC AND HAVE_GETOPT_LONG) + add_executable(xz + src/common/mythread.h + src/common/sysdefs.h + src/common/tuklib_common.h + src/common/tuklib_config.h + src/common/tuklib_exit.c + src/common/tuklib_exit.h + src/common/tuklib_gettext.h + src/common/tuklib_integer.h + src/common/tuklib_mbstr.h + src/common/tuklib_mbstr_fw.c + src/common/tuklib_mbstr_width.c + src/common/tuklib_open_stdxxx.c + src/common/tuklib_open_stdxxx.h + src/common/tuklib_progname.c + src/common/tuklib_progname.h + src/xz/args.c + src/xz/args.h + src/xz/coder.c + src/xz/coder.h + src/xz/file_io.c + src/xz/file_io.h + src/xz/hardware.c + src/xz/hardware.h + src/xz/list.c + src/xz/list.h + src/xz/main.c + src/xz/main.h + src/xz/message.c + src/xz/message.h + src/xz/mytime.c + src/xz/mytime.h + src/xz/options.c + src/xz/options.h + src/xz/private.h + src/xz/signals.c + src/xz/signals.h + src/xz/suffix.c + src/xz/suffix.h + src/xz/util.c + src/xz/util.h + ) + + target_include_directories(xz PRIVATE + src/common + src/liblzma/api + ) + + target_link_libraries(xz PRIVATE liblzma) + + target_compile_definitions(xz PRIVATE ASSUME_RAM=128) + + tuklib_progname(xz) + tuklib_mbstr(xz) + + check_symbol_exists(optreset getopt.h HAVE_OPTRESET) + tuklib_add_definition_if(xz HAVE_OPTRESET) + + check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE) + tuklib_add_definition_if(xz HAVE_POSIX_FADVISE) + + # How to get file time: + check_struct_has_member("struct stat" st_atim.tv_nsec + "sys/types.h;sys/stat.h" + HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC) + if(HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC) + tuklib_add_definitions(xz HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC) + else() + check_struct_has_member("struct stat" st_atimespec.tv_nsec + "sys/types.h;sys/stat.h" + HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC) + if(HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC) + tuklib_add_definitions(xz HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC) + else() + check_struct_has_member("struct stat" st_atimensec + "sys/types.h;sys/stat.h" + HAVE_STRUCT_STAT_ST_ATIMENSEC) + tuklib_add_definition_if(xz HAVE_STRUCT_STAT_ST_ATIMENSEC) + endif() + endif() + + # How to set file time: + check_symbol_exists(futimens "sys/types.h;sys/stat.h" HAVE_FUTIMENS) + if(HAVE_FUTIMENS) + tuklib_add_definitions(xz HAVE_FUTIMENS) + else() + check_symbol_exists(futimes "sys/time.h" HAVE_FUTIMES) + if(HAVE_FUTIMES) + tuklib_add_definitions(xz HAVE_FUTIMES) + else() + check_symbol_exists(futimesat "sys/time.h" HAVE_FUTIMESAT) + if(HAVE_FUTIMESAT) + tuklib_add_definitions(xz HAVE_FUTIMESAT) + else() + check_symbol_exists(utimes "sys/time.h" HAVE_UTIMES) + if(HAVE_UTIMES) + tuklib_add_definitions(xz HAVE_UTIMES) + else() + check_symbol_exists(_futime "sys/utime.h" HAVE__FUTIME) + if(HAVE__FUTIME) + tuklib_add_definitions(xz HAVE__FUTIME) + else() + check_symbol_exists(utime "utime.h" HAVE_UTIME) + tuklib_add_definition_if(xz HAVE_UTIME) + endif() + endif() + endif() + endif() + endif() + + install(TARGETS xz + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT xz) + + install(FILES src/xz/xz.1 + DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" + COMPONENT xz) +endif() diff --git a/cmake/tuklib_common.cmake b/cmake/tuklib_common.cmake new file mode 100644 index 00000000..088a3cb1 --- /dev/null +++ b/cmake/tuklib_common.cmake @@ -0,0 +1,49 @@ +# +# tuklib_common.cmake - common functions and macros for tuklib_*.cmake files +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +function(tuklib_add_definitions TARGET_OR_ALL DEFINITIONS) + # DEFINITIONS may be an empty string/list but it's fine here. There is + # no need to quote ${DEFINITIONS} as empty arguments are fine here. + if(TARGET_OR_ALL STREQUAL "ALL") + add_compile_definitions(${DEFINITIONS}) + else() + target_compile_definitions("${TARGET_OR_ALL}" PRIVATE ${DEFINITIONS}) + endif() +endfunction() + +function(tuklib_add_definition_if TARGET_OR_ALL VAR) + if(${VAR}) + tuklib_add_definitions("${TARGET_OR_ALL}" "${VAR}") + endif() +endfunction() + +# This is an over-simplified version of AC_USE_SYSTEM_EXTENSIONS in Autoconf +# or gl_USE_SYSTEM_EXTENSIONS in gnulib. +macro(tuklib_use_system_extensions TARGET_OR_ALL) + if(NOT WIN32) + # FIXME? The Solaris-specific __EXTENSIONS__ should be conditional + # even on Solaris. See gnulib: git log m4/extensions.m4. + # FIXME? gnulib and autoconf.git has lots of new stuff. + tuklib_add_definitions("${TARGET_OR_ALL}" + _GNU_SOURCE + __EXTENSIONS__ + _POSIX_PTHREAD_SEMANTICS + _TANDEM_SOURCE + _ALL_SOURCE + ) + + list(APPEND CMAKE_REQUIRED_DEFINITIONS + -D_GNU_SOURCE + -D__EXTENSIONS__ + -D_POSIX_PTHREAD_SEMANTICS + -D_TANDEM_SOURCE + -D_ALL_SOURCE + ) + endif() +endmacro() diff --git a/cmake/tuklib_cpucores.cmake b/cmake/tuklib_cpucores.cmake new file mode 100644 index 00000000..5844e4b2 --- /dev/null +++ b/cmake/tuklib_cpucores.cmake @@ -0,0 +1,175 @@ +# +# tuklib_cpucores.cmake - see tuklib_cpucores.m4 for description and comments +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") +include(CheckCSourceCompiles) +include(CheckIncludeFile) + +function(tuklib_cpucores_internal_check) + if(WIN32 OR CYGWIN) + # Nothing to do, the tuklib_cpucores.c handles it. + set(TUKLIB_CPUCORES_DEFINITIONS "" CACHE INTERNAL "") + return() + endif() + + # glibc-based systems (GNU/Linux and GNU/kFreeBSD) have + # sched_getaffinity(). The CPU_COUNT() macro was added in glibc 2.9. + # glibc 2.9 is old enough that if someone uses the code on older glibc, + # the fallback to sysconf() should be good enough. + # + # NOTE: This required that _GNU_SOURCE is defined. We assume that whatever + # feature test macros the caller wants to use are already set in + # CMAKE_REQUIRED_DEFINES and in the target defines. + check_c_source_compiles(" + #include + int main(void) + { + cpu_set_t cpu_mask; + sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask); + return CPU_COUNT(&cpu_mask); + } + " + TUKLIB_CPUCORES_SCHED_GETAFFINITY) + if(TUKLIB_CPUCORES_SCHED_GETAFFINITY) + set(TUKLIB_CPUCORES_DEFINITIONS + "TUKLIB_CPUCORES_SCHED_GETAFFINITY" + CACHE INTERNAL "") + return() + endif() + + # FreeBSD has both cpuset and sysctl. Look for cpuset first because + # it's a better approach. + # + # This test would match on GNU/kFreeBSD too but it would require + # -lfreebsd-glue when linking and thus in the current form this would + # fail on GNU/kFreeBSD. The above test for sched_getaffinity() matches + # on GNU/kFreeBSD so the test below should never run on that OS. + check_c_source_compiles(" + #include + #include + int main(void) + { + cpuset_t set; + cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, + sizeof(set), &set); + return 0; + } + " + TUKLIB_CPUCORES_CPUSET) + if(TUKLIB_CPUCORES_CPUSET) + set(TUKLIB_CPUCORES_DEFINITIONS "HAVE_PARAM_H;TUKLIB_CPUCORES_CPUSET" + CACHE INTERNAL "") + return() + endif() + + # On OS/2, both sysconf() and sysctl() pass the tests in this file, + # but only sysctl() works. On QNX it's the opposite: only sysconf() works + # (although it assumes that _POSIX_SOURCE, _XOPEN_SOURCE, and + # _POSIX_C_SOURCE are undefined or alternatively _QNX_SOURCE is defined). + # + # We test sysctl() first and intentionally break the sysctl() test on QNX + # so that sysctl() is never used on QNX. + check_include_file(sys/param.h HAVE_SYS_PARAM_H) + if(HAVE_SYS_PARAM_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_PARAM_H) + endif() + check_c_source_compiles(" + #ifdef __QNX__ + compile error + #endif + #ifdef HAVE_SYS_PARAM_H + # include + #endif + #include + int main(void) + { + int name[2] = { CTL_HW, HW_NCPU }; + int cpus; + size_t cpus_size = sizeof(cpus); + sysctl(name, 2, &cpus, &cpus_size, NULL, 0); + return 0; + } + " + TUKLIB_CPUCORES_SYSCTL) + if(TUKLIB_CPUCORES_SYSCTL) + if(HAVE_SYS_PARAM_H) + set(TUKLIB_CPUCORES_DEFINITIONS + "HAVE_PARAM_H;TUKLIB_CPUCORES_SYSCTL" + CACHE INTERNAL "") + else() + set(TUKLIB_CPUCORES_DEFINITIONS + "TUKLIB_CPUCORES_SYSCTL" + CACHE INTERNAL "") + endif() + return() + endif() + + # Many platforms support sysconf(). + check_c_source_compiles(" + #include + int main(void) + { + long i; + #ifdef _SC_NPROCESSORS_ONLN + /* Many systems using sysconf() */ + i = sysconf(_SC_NPROCESSORS_ONLN); + #else + /* IRIX */ + i = sysconf(_SC_NPROC_ONLN); + #endif + return 0; + } + " + TUKLIB_CPUCORES_SYSCONF) + if(TUKLIB_CPUCORES_SYSCONF) + set(TUKLIB_CPUCORES_DEFINITIONS "TUKLIB_CPUCORES_SYSCONF" + CACHE INTERNAL "") + return() + endif() + + # HP-UX + check_c_source_compiles(" + #include + #include + int main(void) + { + struct pst_dynamic pst; + pstat_getdynamic(&pst, sizeof(pst), 1, 0); + (void)pst.psd_proc_cnt; + return 0; + } + " + TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) + if(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) + set(TUKLIB_CPUCORES_DEFINITIONS "TUKLIB_CPUCORES_PSTAT_GETDYNAMIC" + CACHE INTERNAL "") + return() + endif() +endfunction() + +function(tuklib_cpucores TARGET_OR_ALL) + if(NOT DEFINED CACHE{TUKLIB_CPUCORES_FOUND}) + message(STATUS + "Checking how to detect the number of available CPU cores") + tuklib_cpucores_internal_check() + + if(DEFINED CACHE{TUKLIB_CPUCORES_DEFINITIONS}) + set(TUKLIB_CPUCORES_FOUND 1 CACHE INTERNAL "") + else() + set(TUKLIB_CPUCORES_FOUND 0 CACHE INTERNAL "") + message(WARNING + "No method to detect the number of CPU cores was found") + endif() + endif() + + if(TUKLIB_CPUCORES_FOUND) + tuklib_add_definitions("${TARGET_OR_ALL}" + "${TUKLIB_CPUCORES_DEFINITIONS}") + endif() +endfunction() diff --git a/cmake/tuklib_integer.cmake b/cmake/tuklib_integer.cmake new file mode 100644 index 00000000..d7e2e28c --- /dev/null +++ b/cmake/tuklib_integer.cmake @@ -0,0 +1,102 @@ +# +# tuklib_integer.cmake - see tuklib_integer.m4 for description and comments +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") +include(TestBigEndian) +include(CheckCSourceCompiles) +include(CheckIncludeFile) +include(CheckSymbolExists) + +function(tuklib_integer TARGET_OR_ALL) + # Check for endianness. Unlike the Autoconf's AC_C_BIGENDIAN, this doesn't + # support Apple universal binaries. The CMake module will leave the + # variable unset so we can catch that situation here instead of continuing + # as if we were little endian. + test_big_endian(WORDS_BIGENDIAN) + if(NOT DEFINED WORDS_BIGENDIAN) + message(FATAL_ERROR "Cannot determine endianness") + endif() + tuklib_add_definition_if("${TARGET_OR_ALL}" WORDS_BIGENDIAN) + + # Look for a byteswapping method. + check_c_source_compiles(" + int main(void) + { + __builtin_bswap16(1); + __builtin_bswap32(1); + __builtin_bswap64(1); + return 0; + } + " + HAVE___BUILTIN_BSWAPXX) + if(HAVE___BUILTIN_BSWAPXX) + tuklib_add_definitions("${TARGET_OR_ALL}" HAVE___BUILTIN_BSWAPXX) + else() + check_include_file(byteswap.h HAVE_BYTESWAP_H) + if(HAVE_BYTESWAP_H) + tuklib_add_definitions("${TARGET_OR_ALL}" HAVE_BYTESWAP_H) + check_symbol_exists(bswap_16 byteswap.h HAVE_BSWAP_16) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_16) + check_symbol_exists(bswap_32 byteswap.h HAVE_BSWAP_32) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_32) + check_symbol_exists(bswap_64 byteswap.h HAVE_BSWAP_64) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_64) + else() + check_include_file(sys/endian.h HAVE_SYS_ENDIAN_H) + if(HAVE_SYS_ENDIAN_H) + tuklib_add_definitions("${TARGET_OR_ALL}" HAVE_SYS_ENDIAN_H) + else() + check_include_file(sys/byteorder.h HAVE_SYS_BYTEORDER_H) + tuklib_add_definition_if("${TARGET_OR_ALL}" + HAVE_SYS_BYTEORDER_H) + endif() + endif() + endif() + + # 16-bit and 32-bit unaligned access is fast on x86(-64), + # big endian PowerPC, and usually on 32/64-bit ARM too. + # There are others too and ARM could be a false match. + # + # Guess the default value for the option. + # CMake's ability to give info about the target arch seems bad. + # The the same arch can have different name depending on the OS. + # + # FIXME: The regex is based on guessing, not on factual information! + # + # NOTE: Compared to the Autoconf test, this lacks the GCC/Clang test + # on ARM and always assumes that unaligned is fast on ARM. + set(FAST_UNALIGNED_GUESS OFF) + if(CMAKE_SYSTEM_PROCESSOR MATCHES + "[Xx3456]86|^[Xx]64|^[Aa][Mm][Dd]64|^[Aa][Rr][Mm]|^aarch|^powerpc|^ppc") + if(NOT WORDS_BIGENDIAN OR + NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc|^ppc") + set(FAST_UNALIGNED_GUESS ON) + endif() + endif() + option(TUKLIB_FAST_UNALIGNED_ACCESS + "Enable if the system supports *fast* unaligned memory access \ +with 16-bit and 32-bit integers." + "${FAST_UNALIGNED_GUESS}") + tuklib_add_definition_if("${TARGET_OR_ALL}" TUKLIB_FAST_UNALIGNED_ACCESS) + + # Unsafe type punning: + option(TUKLIB_USE_UNSAFE_TYPE_PUNNING + "This introduces strict aliasing violations and \ +may result in broken code. However, this might improve performance \ +in some cases, especially with old compilers \ +(e.g. GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7)." + OFF) + tuklib_add_definition_if("${TARGET_OR_ALL}" TUKLIB_USE_UNSAFE_TYPE_PUNNING) + + # Check for GCC/Clang __builtin_assume_aligned(). + check_c_source_compiles( + "int main(void) { __builtin_assume_aligned(\"\", 1); return 0; }" + HAVE___BUILTIN_ASSUME_ALIGNED) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE___BUILTIN_ASSUME_ALIGNED) +endfunction() diff --git a/cmake/tuklib_mbstr.cmake b/cmake/tuklib_mbstr.cmake new file mode 100644 index 00000000..e073be6a --- /dev/null +++ b/cmake/tuklib_mbstr.cmake @@ -0,0 +1,20 @@ +# +# tuklib_mbstr.cmake - see tuklib_mbstr.m4 for description and comments +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") +include(CheckSymbolExists) + +function(tuklib_mbstr TARGET_OR_ALL) + check_symbol_exists(mbrtowc wchar.h HAVE_MBRTOWC) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_MBRTOWC) + + # NOTE: wcwidth() requires _GNU_SOURCE or _XOPEN_SOURCE on GNU/Linux. + check_symbol_exists(wcwidth wchar.h HAVE_WCWIDTH) + tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_WCWIDTH) +endfunction() diff --git a/cmake/tuklib_physmem.cmake b/cmake/tuklib_physmem.cmake new file mode 100644 index 00000000..ea5bcc46 --- /dev/null +++ b/cmake/tuklib_physmem.cmake @@ -0,0 +1,150 @@ +# +# tuklib_physmem.cmake - see tuklib_physmem.m4 for description and comments +# +# NOTE: Compared tuklib_physmem.m4, this lacks support for Tru64, IRIX, and +# Linux sysinfo() (usually sysconf() is used on GNU/Linux). +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") +include(CheckCSourceCompiles) +include(CheckIncludeFile) + +function(tuklib_physmem_internal_check) + # Shortcut on Windows: + if(WIN32 OR CYGWIN) + # Nothing to do, the tuklib_physmem.c handles it. + set(TUKLIB_PHYSMEM_DEFINITIONS "" CACHE INTERNAL "") + return() + endif() + + # Full check for special cases: + check_c_source_compiles(" + #if defined(_WIN32) || defined(__CYGWIN__) || defined(__OS2__) \ + || defined(__DJGPP__) || defined(__VMS) \ + || defined(AMIGA) || defined(__AROS__) || defined(__QNX__) + int main(void) { return 0; } + #else + compile error + #endif + " + TUKLIB_PHYSMEM_SPECIAL) + if(TUKLIB_PHYSMEM_SPECIAL) + # Nothing to do, the tuklib_physmem.c handles it. + set(TUKLIB_PHYSMEM_DEFINITIONS "" CACHE INTERNAL "") + return() + endif() + + # Look for AIX-specific solution before sysconf(), because the test + # for sysconf() will pass on AIX but won't actually work + # (sysconf(_SC_PHYS_PAGES) compiles but always returns -1 on AIX). + check_c_source_compiles(" + #include + int main(void) + { + (void)_system_configuration.physmem; + return 0; + } + " + TUKLIB_PHYSMEM_AIX) + if(TUKLIB_PHYSMEM_AIX) + set(TUKLIB_PHYSMEM_DEFINITIONS "TUKLIB_PHYSMEM_AIX" CACHE INTERNAL "") + return() + endif() + + # sysconf() + check_c_source_compiles(" + #include + int main(void) + { + long i; + i = sysconf(_SC_PAGESIZE); + i = sysconf(_SC_PHYS_PAGES); + return 0; + } + " + TUKLIB_PHYSMEM_SYSCONF) + if(TUKLIB_PHYSMEM_SYSCONF) + set(TUKLIB_PHYSMEM_DEFINITIONS "TUKLIB_PHYSMEM_SYSCONF" + CACHE INTERNAL "") + return() + endif() + + # sysctl() + check_include_file(sys/param.h HAVE_SYS_PARAM_H) + if(HAVE_SYS_PARAM_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_PARAM_H) + endif() + + check_c_source_compiles(" + #ifdef HAVE_SYS_PARAM_H + # include + #endif + #include + int main(void) + { + int name[2] = { CTL_HW, HW_PHYSMEM }; + unsigned long mem; + size_t mem_ptr_size = sizeof(mem); + sysctl(name, 2, &mem, &mem_ptr_size, NULL, 0); + return 0; + } + " + TUKLIB_PHYSMEM_SYSCTL) + if(TUKLIB_PHYSMEM_SYSCTL) + if(HAVE_SYS_PARAM_H) + set(TUKLIB_PHYSMEM_DEFINITIONS + "HAVE_PARAM_H;TUKLIB_PHYSMEM_SYSCTL" + CACHE INTERNAL "") + else() + set(TUKLIB_PHYSMEM_DEFINITIONS + "TUKLIB_PHYSMEM_SYSCTL" + CACHE INTERNAL "") + endif() + return() + endif() + + # HP-UX + check_c_source_compiles(" + #include + #include + int main(void) + { + struct pst_static pst; + pstat_getstatic(&pst, sizeof(pst), 1, 0); + (void)pst.physical_memory; + (void)pst.page_size; + return 0; + } + " + TUKLIB_PHYSMEM_PSTAT_GETSTATIC) + if(TUKLIB_PHYSMEM_PSTAT_GETSTATIC) + set(TUKLIB_PHYSMEM_DEFINITIONS "TUKLIB_PHYSMEM_PSTAT_GETSTATIC" + CACHE INTERNAL "") + return() + endif() +endfunction() + +function(tuklib_physmem TARGET_OR_ALL) + if(NOT DEFINED CACHE{TUKLIB_PHYSMEM_FOUND}) + message(STATUS "Checking how to detect the amount of physical memory") + tuklib_physmem_internal_check() + + if(DEFINED CACHE{TUKLIB_PHYSMEM_DEFINITIONS}) + set(TUKLIB_PHYSMEM_FOUND 1 CACHE INTERNAL "") + else() + set(TUKLIB_PHYSMEM_FOUND 0 CACHE INTERNAL "") + message(WARNING + "No method to detect the amount of physical memory was found") + endif() + endif() + + if(TUKLIB_PHYSMEM_FOUND) + tuklib_add_definitions("${TARGET_OR_ALL}" + "${TUKLIB_PHYSMEM_DEFINITIONS}") + endif() +endfunction() diff --git a/cmake/tuklib_progname.cmake b/cmake/tuklib_progname.cmake new file mode 100644 index 00000000..0fa1d3d7 --- /dev/null +++ b/cmake/tuklib_progname.cmake @@ -0,0 +1,19 @@ +# +# tuklib_progname.cmake - see tuklib_progname.m4 for description and comments +# +# Author: Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# + +include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake") +include(CheckSymbolExists) + +function(tuklib_progname TARGET_OR_ALL) + # NOTE: This glibc extension requires _GNU_SOURCE. + check_symbol_exists(program_invocation_name errno.h + HAVE_DECL_PROGRAM_INVOCATION_NAME) + tuklib_add_definition_if("${TARGET_OR_ALL}" + HAVE_DECL_PROGRAM_INVOCATION_NAME) +endfunction() -- cgit v1.2.3 From 7da3ebc67fb5414034685ec16c7a29dad03dfa9b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 25 Feb 2020 21:35:14 +0200 Subject: Update THANKS. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index 03e731b6..4301f205 100644 --- a/THANKS +++ b/THANKS @@ -66,6 +66,7 @@ has been important. :-) In alphabetical order: - Bela Lubkin - Gregory Margo - Julien Marrec + - Martin Matuška - Jim Meyering - Arkadiusz Miskiewicz - Conley Moorhous -- cgit v1.2.3 From 7c85e8953ced204c858101872a15183e4639e9fb Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 14:18:03 +0200 Subject: Translations: Add fi and pt_BR, and update de, fr, it, and pl. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The German translation isn't identical to the file in the Translation Project but the changes (white space changes only) were approved by the translator Mario Blättermann. --- po/LINGUAS | 2 + po/de.po | 476 ++++++++++++++-------------- po/fi.po | 974 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/fr.po | 272 ++++++++-------- po/it.po | 479 ++++++++++++---------------- po/pl.po | 239 +++++++------- po/pt_BR.po | 1001 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 2697 insertions(+), 746 deletions(-) create mode 100644 po/fi.po create mode 100644 po/pt_BR.po diff --git a/po/LINGUAS b/po/LINGUAS index e095f6c9..97ee573b 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,6 +1,8 @@ cs de +fi fr it pl +pt_BR vi diff --git a/po/de.po b/po/de.po index bbf33513..f17c16b5 100644 --- a/po/de.po +++ b/po/de.po @@ -1,20 +1,24 @@ # XZ Utils German translation # This file is put in the public domain. -# Andre Noll , 2010. # +# André Noll , 2010. +# Anna Henningsen , 2015. +# Mario Blättermann , 2019. msgid "" msgstr "" -"Project-Id-Version: XZ Utils 4.999.9beta\n" +"Project-Id-Version: xz 5.2.4\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2015-08-07 05:10+0200\n" -"PO-Revision-Date: 2015-08-07 14:00+0200\n" -"Last-Translator: \n" -"Language-Team: German\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-04-12 11:00+0200\n" +"Last-Translator: Mario Blättermann \n" +"Language-Team: German \n" "Language: de\n" +"X-Bugs: Report translation errors to the Language-Team address.\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-Generator: Lokalize 18.12.3\n" #: src/xz/args.c:63 #, c-format @@ -38,28 +42,36 @@ msgstr "%s: Unbekanntes Dateiformat" #: src/xz/args.c:429 src/xz/args.c:437 #, c-format msgid "%s: Unsupported integrity check type" -msgstr "%s: Integritäts-Check-Typ nicht unterstützt" +msgstr "%s: Integritätsprüfungstyp nicht unterstützt" #: src/xz/args.c:473 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." +msgstr "Nur eine Datei kann als Argument für »--files« oder »--files0« angegeben werden." #: src/xz/args.c:541 #, 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 +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 +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 msgid "Maximum number of filters is four" msgstr "Maximal vier Filter möglich" #: src/xz/coder.c:129 msgid "Memory usage limit is too low for the given filter setup." -msgstr "Das Speicher-Limit ist zu niedrig für die gegebene Filter-Konfiguration." +msgstr "Die Speicherbedarfsbegrenzung ist für die gegebene Filter-Konfiguration zu niedrig." #: src/xz/coder.c:159 msgid "Using a preset in raw mode is discouraged." -msgstr "Verwendung einer Voreinstellung im Raw-Modus wird nicht empfohlen." +msgstr "Verwendung einer Voreinstellung im Roh-Modus wird nicht empfohlen." #: src/xz/coder.c:161 msgid "The exact options of the presets may vary between software versions." @@ -79,53 +91,53 @@ msgstr "Diese Filterkette ist inkompatibel zu --flush-timeout" #: src/xz/coder.c:215 msgid "Switching to single-threaded mode due to --flush-timeout" -msgstr "Schalte um auf Single-Thread-Modus wegen --flush-timeout" +msgstr "Wegen --flush-timeout wird auf den Einzelthread-Modus umgeschaltet" -#: src/xz/coder.c:234 +#: src/xz/coder.c:235 #, c-format msgid "Using up to % threads." -msgstr "Benutze bis zu % Threads." +msgstr "Bis zu % Threads werden benutzt." -#: src/xz/coder.c:247 +#: src/xz/coder.c:251 msgid "Unsupported filter chain or filter options" -msgstr "Optionen nicht unterstützt" +msgstr "Filterkette oder Filteroptionen werden nicht unterstützt" -#: src/xz/coder.c:255 +#: src/xz/coder.c:263 #, c-format msgid "Decompression will need %s MiB of memory." -msgstr "Dekomprimierung wird %s MiB Speicher brauchen." +msgstr "Dekompression wird %s MiB Speicher brauchen." -#: src/xz/coder.c:290 +#: src/xz/coder.c:300 #, c-format msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" -msgstr "Passte die Anzahl Threads von %s auf %s an um nicht das Speichernutzungslimit von %s MiB zu übersteigen" +msgstr "Anzahl der Threads wurde von %s auf %s angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" -#: src/xz/coder.c:344 +#: src/xz/coder.c:354 #, 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 "Passte LZMA%c-Wörterbuchgröße von %s MiB to %s MiB an, um nicht das Speichernutzungslimit von %s MiB zu übersteigen" +msgstr "Die LZMA%c-Wörterbuchgröße wurde von %s MiB auf %s MiB angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" -#: src/xz/file_io.c:100 src/xz/file_io.c:108 +#: src/xz/file_io.c:110 src/xz/file_io.c:118 #, c-format msgid "Error creating a pipe: %s" msgstr "Fehler beim Erzeugen der Pipeline: %s" -#: src/xz/file_io.c:163 +#: src/xz/file_io.c:173 msgid "Sandbox is disabled due to incompatible command line arguments" -msgstr "Sandbox ist wegen inkompatibler Kommandozeilenargumente deaktiviert" +msgstr "Sandbox ist wegen inkompatibler Befehlszeilenargumente deaktiviert" -#: src/xz/file_io.c:206 +#: src/xz/file_io.c:216 msgid "Sandbox was successfully enabled" msgstr "Sandbox wurde erfolgreich aktiviert" -#: src/xz/file_io.c:210 +#: src/xz/file_io.c:220 msgid "Failed to enable the sandbox" -msgstr "Konnte Sandbox nicht aktivieren" +msgstr "Sandbox konnte nicht aktiviert werden" -#: src/xz/file_io.c:252 +#: src/xz/file_io.c:262 #, c-format msgid "%s: poll() failed: %s" -msgstr "%s: poll() Fehler: %s" +msgstr "%s: poll() ist fehlgeschlagen: %s" #. TRANSLATORS: When compression or decompression finishes, #. and xz is going to remove the source file, xz first checks @@ -137,107 +149,107 @@ msgstr "%s: poll() Fehler: %s" #. 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:322 +#: src/xz/file_io.c:332 #, c-format msgid "%s: File seems to have been moved, not removing" -msgstr "%s: Datei scheint umbenannt worden zu sein, daher wird sie nicht gelöscht" +msgstr "%s: Datei scheint verschoben worden zu sein, daher wird sie nicht gelöscht" -#: src/xz/file_io.c:329 src/xz/file_io.c:847 +#: src/xz/file_io.c:339 src/xz/file_io.c:878 #, c-format msgid "%s: Cannot remove: %s" -msgstr "%s: Kann nicht löschen: %s" +msgstr "%s: Löschen nicht möglich: %s" -#: src/xz/file_io.c:354 +#: src/xz/file_io.c:364 #, c-format msgid "%s: Cannot set the file owner: %s" -msgstr "%s: Kann Dateieigentümer nicht setzen: %s" +msgstr "%s: Dateieigentümer kann nicht gesetzt werden: %s" -#: src/xz/file_io.c:360 +#: src/xz/file_io.c:370 #, c-format msgid "%s: Cannot set the file group: %s" -msgstr "%s: Kann Dateigruppe nicht setzen: %s" +msgstr "%s: Dateigruppe kann nicht gesetzt werden: %s" -#: src/xz/file_io.c:379 +#: src/xz/file_io.c:389 #, c-format msgid "%s: Cannot set the file permissions: %s" -msgstr "%s: Kann Zugriffsrechte nicht setzen: %s" +msgstr "%s: Zugriffsrechte können nicht gesetzt werden: %s" -#: src/xz/file_io.c:489 +#: src/xz/file_io.c:515 #, c-format msgid "Error getting the file status flags from standard input: %s" -msgstr "Kann Status-Flags der Standardeingabe nicht ermitteln: %s" +msgstr "Dateistatus-Markierungen können nicht aus der Standardeingabe ermittelt werden: %s" -#: src/xz/file_io.c:543 src/xz/file_io.c:605 +#: src/xz/file_io.c:572 src/xz/file_io.c:634 #, c-format msgid "%s: Is a symbolic link, skipping" -msgstr "%s: Überspringe symbolischen Link" +msgstr "%s: Ist ein symbolischer Link, wird übersprungen" -#: src/xz/file_io.c:634 +#: src/xz/file_io.c:663 #, c-format msgid "%s: Is a directory, skipping" -msgstr "%s: Überspringe Verzeichnis" +msgstr "%s: Ist ein Verzeichnis, wird übersprungen" -#: src/xz/file_io.c:640 +#: src/xz/file_io.c:669 #, c-format msgid "%s: Not a regular file, skipping" -msgstr "%s: Keine reguläre Datei, überspringe" +msgstr "%s: Keine reguläre Datei, wird übersprungen" -#: src/xz/file_io.c:657 +#: src/xz/file_io.c:686 #, c-format msgid "%s: File has setuid or setgid bit set, skipping" -msgstr "%s: Datei hat das setuid- oder setgid-Bit gesetzt, überspringe" +msgstr "%s: Datei hat das setuid- oder setgid-Bit gesetzt, wird übersprungen" -#: src/xz/file_io.c:664 +#: src/xz/file_io.c:693 #, c-format msgid "%s: File has sticky bit set, skipping" -msgstr "%s: Datei hat sticky-Bit gesetzt, überspringe" +msgstr "%s: Datei hat sticky-Bit gesetzt, wird übersprungen" -#: src/xz/file_io.c:671 +#: src/xz/file_io.c:700 #, c-format msgid "%s: Input file has more than one hard link, skipping" -msgstr "%s: Eingabedatei hat mehr als einen Hard Link, überspringe" +msgstr "%s: Eingabedatei hat mehr als einen harten Link, wird übersprungen" -#: src/xz/file_io.c:756 +#: src/xz/file_io.c:788 #, c-format msgid "Error restoring the status flags to standard input: %s" -msgstr "Fehler beim Wiederherstellen der Status-Flags für die Standardausgabe: %s" +msgstr "Fehler beim Wiederherstellen der Status-Markierungen für die Standardeingabe: %s" -#: src/xz/file_io.c:805 +#: src/xz/file_io.c:836 #, c-format msgid "Error getting the file status flags from standard output: %s" -msgstr "Kann Status-Flags der Standardausgabe nicht ermitteln: %s" +msgstr "Status-Markierungen der Standardausgabe können nicht ermittelt werden: %s" -#: src/xz/file_io.c:983 +#: src/xz/file_io.c:1014 #, c-format msgid "Error restoring the O_APPEND flag to standard output: %s" -msgstr "Fehler beim Wiederherstellen des O_APPEND-Flags bei Standardausgabe: %s" +msgstr "Fehler beim Wiederherstellen der O_APPEND-Markierungen für die Standardausgabe: %s" -#: src/xz/file_io.c:995 +#: src/xz/file_io.c:1026 #, c-format msgid "%s: Closing the file failed: %s" msgstr "%s: Fehler beim Schließen der Datei: %s" -#: src/xz/file_io.c:1031 src/xz/file_io.c:1257 +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 #, c-format msgid "%s: Seeking failed when trying to create a sparse file: %s" -msgstr "%s: Positionierungsfehler beim Versuch eine sparse (dünnbesetzte) Datei zu erzeugen: %s" +msgstr "%s: Positionierungsfehler beim Versuch, eine Sparse-Datei (dünnbesetzte Datei) zu erzeugen: %s" -#: src/xz/file_io.c:1126 +#: src/xz/file_io.c:1157 #, c-format msgid "%s: Read error: %s" msgstr "%s: Lesefehler: %s" -#: src/xz/file_io.c:1146 +#: src/xz/file_io.c:1177 #, c-format msgid "%s: Error seeking the file: %s" -msgstr "%s: Fehler beim Lesen der Dateinamen: %s" +msgstr "%s: Fehler beim Durchsuchen der Datei: %s" -#: src/xz/file_io.c:1156 +#: src/xz/file_io.c:1187 #, c-format msgid "%s: Unexpected end of file" msgstr "%s: Unerwartetes Ende der Datei" -#: src/xz/file_io.c:1215 +#: src/xz/file_io.c:1246 #, c-format msgid "%s: Write error: %s" msgstr "%s: Schreibfehler: %s" @@ -250,22 +262,22 @@ msgstr "Deaktiviert" #. the alignment looks nice. #: src/xz/hardware.c:126 msgid "Total amount of physical memory (RAM): " -msgstr "Gesamtmenge physikalischer Speicher (RAM): " +msgstr "Gesamtmenge physischer Speicher (RAM): " #: src/xz/hardware.c:128 msgid "Memory usage limit for compression: " -msgstr "Speichernutzungslimit für Komprimierung: " +msgstr "Speicherbedarfsbegrenzung für Kompression: " #: src/xz/hardware.c:130 msgid "Memory usage limit for decompression: " -msgstr "Speichernutzungslimit für Dekomprimierung: " +msgstr "Speicherbedarfsbegrenzung für Dekompression: " #. 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" -msgstr "Kein" +msgstr "Keine" #. TRANSLATORS: Indicates that integrity check name is not known, #. but the Check ID is known (here 2). This and other "Unknown-N" @@ -328,65 +340,65 @@ msgstr "%s: Datei ist leer" #: src/xz/list.c:158 #, c-format msgid "%s: Too small to be a valid .xz file" -msgstr "%s: Zu klein um eine gültige .xz-Datei zu sein" +msgstr "%s: Zu klein, um eine gültige .xz-Datei zu sein" #. 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:671 +#: src/xz/list.c:677 msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" msgstr " Str. Blöcke Kompr. Unkompr. Verh. Check Dateiname" -#: src/xz/list.c:711 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" -msgstr " Ströme: %s\n" +msgstr " Datenströme: %s\n" -#: src/xz/list.c:713 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" -msgstr " Blöcke: %s\n" +msgstr " Blöcke: %s\n" -#: src/xz/list.c:715 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" -msgstr " Größe komprimiert: %s\n" +msgstr " Größe komprimiert: %s\n" -#: src/xz/list.c:718 +#: src/xz/list.c:724 #, c-format msgid " Uncompressed size: %s\n" -msgstr " Größe unkomprimiert: %s\n" +msgstr " Größe unkomprimiert: %s\n" -#: src/xz/list.c:721 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" -msgstr " Verhältnis: %s\n" +msgstr " Verhältnis: %s\n" -#: src/xz/list.c:723 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" -msgstr " Check: %s\n" +msgstr " Check: %s\n" -#: src/xz/list.c:724 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" -msgstr " Strom-Auffüllung: %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:752 +#: src/xz/list.c:758 msgid "" " Streams:\n" " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" msgstr "" -" Ströme:\n" -" Strom Blöcke KompOffset UnkompOffset KompGröße UnkompGröße Verh. Check Auffüllung" +" 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:807 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" @@ -402,59 +414,59 @@ msgstr "" #. 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:819 +#: src/xz/list.c:825 #, c-format msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" -msgstr " CheckWert %*s Kopf Schalter KompGröße Speicher Filter" +msgstr " PrüfWert %*s Kopf Schalter KompGröße Speicher Filter" -#: src/xz/list.c:897 src/xz/list.c:1072 +#: 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:899 src/xz/list.c:1074 +#: 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:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Ja" -#: src/xz/list.c:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "Nein" -#: src/xz/list.c:901 src/xz/list.c:1076 +#: src/xz/list.c:907 src/xz/list.c:1082 #, c-format msgid " Minimum XZ Utils version: %s\n" -msgstr " Kleinste 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:1051 +#: src/xz/list.c:1057 #, 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:1064 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Gesamt:" -#: src/xz/list.c:1065 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" -msgstr " Anzahl Dateien: %s\n" +msgstr " Anzahl Dateien: %s\n" -#: src/xz/list.c:1140 +#: src/xz/list.c:1146 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:1146 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" -msgstr "--list unterstützt kein Lesen der Standardeingabe" +msgstr "--list unterstützt kein Lesen aus der Standardeingabe" #: src/xz/main.c:89 #, c-format @@ -464,20 +476,20 @@ msgstr "%s: Fehler beim Lesen der Dateinamen: %s" #: src/xz/main.c:96 #, c-format msgid "%s: Unexpected end of input when reading filenames" -msgstr "%s: Unerwartetes Ende beim Lesen der Dateinamen" +msgstr "%s: Unerwartetes Ende der Eingabe beim Lesen der Dateinamen" #: src/xz/main.c:120 #, c-format msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" -msgstr "%s: Null-Zeichen gefunden beim Lesen der Dateinamen; Meinten Sie `--files0' statt `--files'?" +msgstr "%s: Null-Zeichen beim Lesen der Dateinamen gefunden; meinten Sie »--files0« statt »--files«?" #: src/xz/main.c:174 msgid "Compression and decompression with --robot are not supported yet." -msgstr "Komprimierung und Dekomprimierung mit --robot ist noch nicht unterstützt." +msgstr "Kompression und Dekompression mit --robot wird noch nicht unterstützt." -#: src/xz/main.c:249 +#: src/xz/main.c:252 msgid "Cannot read data from standard input when reading filenames from standard input" -msgstr "Lesen der Standardeingabe ist nicht möglich, wenn die Dateinamen auch von der Standardeingabe gelesen werden" +msgstr "Lesen der Daten aus der Standardeingabe ist nicht möglich, wenn die Dateinamen auch aus der Standardeingabe gelesen werden" #. TRANSLATORS: This is the program name in the beginning #. of the line in messages. Usually it becomes "xz: ". @@ -494,19 +506,19 @@ msgstr "Interner Fehler (Bug)" #: src/xz/message.c:784 msgid "Cannot establish signal handlers" -msgstr "Kann Signalroutine nicht setzen" +msgstr "Signalroutine kann nicht gesetzt werden" #: src/xz/message.c:793 msgid "No integrity check; not verifying file integrity" -msgstr "Kein Integritäts-Check; werde Datei-Integrität nicht überprüfen" +msgstr "Keine Integritätsprüfung; Integrität der Datei wird nicht überprüft" #: src/xz/message.c:796 msgid "Unsupported type of integrity check; not verifying file integrity" -msgstr "Typ des Integritäts-Checks nicht unterstützt; werde Datei-Integrität nicht überprüfen" +msgstr "Typ der Integritätsprüfung wird nicht unterstützt; Integrität der Datei wird nicht überprüft" #: src/xz/message.c:803 msgid "Memory usage limit reached" -msgstr "Speichernutzungslimit erreicht" +msgstr "Speicherbedarfsbegrenzung erreicht" #: src/xz/message.c:806 msgid "File format not recognized" @@ -518,7 +530,7 @@ msgstr "Optionen nicht unterstützt" #: src/xz/message.c:812 msgid "Compressed data is corrupt" -msgstr "Komprimierte Daten sind korrupt" +msgstr "Komprimierte Daten sind beschädigt" #: src/xz/message.c:815 msgid "Unexpected end of input" @@ -527,12 +539,12 @@ msgstr "Unerwartetes Ende der Eingabe" #: src/xz/message.c:848 #, c-format msgid "%s MiB of memory is required. The limiter is disabled." -msgstr "%s MiB Speicher wird benötigt. Der Begrenzer ist deaktiviert." +msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist deaktiviert." #: src/xz/message.c:876 #, c-format msgid "%s MiB of memory is required. The limit is %s." -msgstr "%s MiB Speicher wird benötigt. Limit ist %s." +msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist %s." #: src/xz/message.c:1043 #, c-format @@ -542,7 +554,7 @@ msgstr "%s: Filterkette: %s\n" #: src/xz/message.c:1053 #, c-format msgid "Try `%s --help' for more information." -msgstr "Versuchen Sie `%s --help' für mehr Informationen." +msgstr "Versuchen Sie »%s --help« für mehr Informationen." #: src/xz/message.c:1079 #, c-format @@ -551,7 +563,7 @@ msgid "" "Compress or decompress FILEs in the .xz format.\n" "\n" msgstr "" -"Benutzung: %s [OPTION]... [DATEI]...\n" +"Aufruf: %s [OPTION]… [DATEI]…\n" "Komprimiert oder dekomprimiert .xz-DATEI(EN).\n" "\n" @@ -563,7 +575,7 @@ msgstr "" #: src/xz/message.c:1090 msgid " Operation mode:\n" -msgstr " Operationsmodus:\n" +msgstr " Aktionsmodus:\n" #: src/xz/message.c:1093 msgid "" @@ -572,10 +584,10 @@ msgid "" " -t, --test test compressed file integrity\n" " -l, --list list information about .xz files" msgstr "" -" -z, --compress Erzwinge Komprimierung\n" -" -d, --decompress Erzwinge Dekomprimierung\n" -" -t, --test Überprüfe Dateiintegrität\n" -" -l, --list Führe Dateiinformationen auf" +" -z, --compress Kompression erzwingen\n" +" -d, --decompress Dekompression erzwingen\n" +" -t, --test Dateiintegrität überprüfen\n" +" -l, --list Dateiinformationen anzeigen" #: src/xz/message.c:1099 msgid "" @@ -583,7 +595,7 @@ msgid "" " Operation modifiers:\n" msgstr "" "\n" -" Operationsmodifikatoren:\n" +" Aktionsmodifikatoren:\n" #: src/xz/message.c:1102 msgid "" @@ -592,18 +604,19 @@ msgid "" " -c, --stdout write to standard output and don't delete input files" msgstr "" " -k, --keep Eingabedateien beibehalten (nicht löschen)\n" -" -f, --force Erzwinge Überschreiben der Ausgabedatei und\n" -" (de)komprimiere Verweise (Links)\n" -" -c, --stdout Schreibe nach Standardausgabe und lösche nicht die\n" -" Eingabedateien" +" -f, --force Überschreiben der Ausgabedatei erzwingen\n" +" und Links (de)komprimieren\n" +" -c, --stdout In die Standardausgabe schreiben und die\n" +" Eingabedateien nicht löschen" #: src/xz/message.c:1108 msgid "" " --single-stream decompress only the first stream, and silently\n" " ignore possible remaining input data" msgstr "" -" --single-stream Dekomprimiere nur den ersten Datenstrom und ignoriere\n" -" stillschweigend mögliche weitere Eingabedaten" +" --single-stream Nur den ersten Datenstrom dekomprimieren und\n" +" stillschweigend mögliche weitere Eingabedaten\n" +" ignorieren" #: src/xz/message.c:1111 msgid "" @@ -614,14 +627,17 @@ msgid "" " filenames must be terminated with the newline character\n" " --files0[=FILE] like --files but use the null character as terminator" msgstr "" -" --no-sparse Erzeuge beim Dekomprimieren keine dünnbesetzten\n" -" (sparse) Dateien\n" -" -S, --suffix=.SUF Benutze `.SUF' als Endung für komprimierte Dateien\n" -" --files=[DATEI] Lese zu verarbeitende Dateinamen von DATEI; falls\n" -" DATEI nicht angegeben wurde, werden Dateinamen\n" -" von der Standardeingabe gelesen. Dateinamen müssen mit\n" -" einem Zeilenumbruch voneinander getrennt werden\n" -" --files0=[DATEI] Wie --files, aber benutze das Null-Zeichen als Trenner" +" --no-sparse Beim Dekomprimieren keine Sparse-Dateien\n" +" erzeugen\n" +" -S, --suffix=.END ».END« als Endung für komprimierte Dateien\n" +" benutzen\n" +" --files=[DATEI] Zu verarbeitende Dateinamen aus DATEI lesen;\n" +" falls keine DATEI angegeben wurde, werden \n" +" Dateinamen aus der Standardeingabe gelesen.\n" +" Dateinamen müssen durch einen Zeilenumbruch\n" +" voneinander getrennt werden\n" +" --files0=[DATEI] Wie --files, aber das Null-Zeichen wird als\n" +" Trenner benutzt" #: src/xz/message.c:1120 msgid "" @@ -629,7 +645,7 @@ msgid "" " Basic file format and compression options:\n" msgstr "" "\n" -" Grundlegende Optionen für Dateiformat und Komprimierung:\n" +" Grundlegende Optionen für Dateiformat und Kompression:\n" #: src/xz/message.c:1122 msgid "" @@ -639,42 +655,44 @@ msgid "" " `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" -" -C, --check=CHECK Typ des Integritätschecks: `none' (Vorsicht), `crc32',\n" -" `crc64' (Voreinstellung), oder `sha256'" +" Werte sind »auto« (Voreinstellung), »xz«, »lzma« und\n" +" »raw«\n" +" -C, --check=PRÜFUNG Typ der Integritätsprüfung: »none« (Vorsicht),\n" +" »crc32«, »crc64« (Voreinstellung) oder »sha256«" #: src/xz/message.c:1127 msgid " --ignore-check don't verify the integrity check when decompressing" -msgstr " --ignore-check überprüfe nicht den Integritätscheck beim Dekomprimieren" +msgstr "" +" --ignore-check Integritätsprüfung beim Dekomprimieren\n" +" nicht ausführen" #: src/xz/message.c:1131 msgid "" " -0 ... -9 compression preset; default is 6; take compressor *and*\n" " decompressor memory usage into account before using 7-9!" msgstr "" -" -0 .. -9 Kompressionseinstellung; Voreinstellung is 6. Beachten\n" -" Sie den Speicherverbrauch des Komprimierers *und* des\n" -" Dekomprimierers, wenn Sie 7-9 benutzen!" +" -0 .. -9 Kompressionseinstellung; Voreinstellung ist 6.\n" +" Beachten Sie den Speicherbedarf des Kompressors\n" +" *und* des Dekompressors, wenn Sie 7-9 benutzen!" #: src/xz/message.c:1135 msgid "" " -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" msgstr "" -" -e, --extreme Versuche durch stärkere CPU-Nutzung das Kompressions-\n" -" verhältnis zu verbessern. Dies beeinflusst nicht den\n" -" Speicherbedarf des Dekomprimierers." +" -e, --extreme Versuchen, durch stärkere CPU-Auslastung das\n" +" Kompressionsverhältnis zu verbessern. Dies beeinflusst\n" +" den Speicherbedarf des Dekompressors nicht." #: src/xz/message.c:1139 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 "" -" -T, --threads=ZAHL Erzeuge höchstens ZAHL viele Threads; die Grund-\n" -" einstellung ist 1. Wenn der Wert 0 angegeben wird, dann\n" -" werden so viele Threads erzeugt, wie es Prozessorkerne\n" -" gibt" +" -T, --threads=ANZAHL Höchstens die angegebene ANZAHL Threads erzeugen;\n" +" die Voreinstellung ist 1. Wenn der Wert 0 angegeben\n" +" wird, dann werden so viele Threads erzeugt, wie\n" +" Prozessorkerne vorhanden sind" #: src/xz/message.c:1144 msgid "" @@ -683,9 +701,10 @@ msgid "" " use this to set the block size for threaded compression" msgstr "" " --block-size=GRÖẞE\n" -" Beginne einen neuen .xz-Block nach GRÖẞE Bytes Eingabe;\n" -" Benutzen Sie diese Option um die Block Größe für\n" -" Komprimierung mit mehreren Threads zu setzen" +" Einen neuen .xz-Block nach der angegebenen GRÖẞE\n" +" der Eingabe in Bytes beginnen; benutzen Sie diese\n" +" Option, um die Blockgröße für die Kompression mit\n" +" mehreren Threads zu setzen" #: src/xz/message.c:1148 msgid "" @@ -694,9 +713,9 @@ msgid "" " intervals of uncompressed data" msgstr "" " --block-list=GRÖẞEN\n" -" Beginne einen neuen .xz-Block gemäß der angegebenen,\n" -" durch Kommata getrennten Intervalle an unkomprimierten\n" -" Daten" +" Einen neuen .xz-Block gemäß der angegebenen, durch\n" +" Kommata getrennten Intervalle an unkomprimierten\n" +" Daten beginnen" #: src/xz/message.c:1152 msgid "" @@ -705,12 +724,12 @@ msgid "" " passed since the previous flush and reading more input\n" " would block, all pending data is flushed out" msgstr "" -" --flush-timeout=ZEITÜBERSCHREITUNG\n" -" Wenn beim Komprimieren mehr als ZEITÜBERSCHREITUNG\n" -" Millisekunden seit der letzten Flush-Operation ver-\n" -" gangen sind und das Lesen von zusätzlichen Eingabe-\n" -" daten den Prozess blockieren würde, dann werden alle\n" -" noch ausstehenden Daten geschrieben" +" --flush-timeout=ZEIT\n" +" Wenn beim Komprimieren mehr als die angegebene ZEIT\n" +" in Millisekunden seit der letzten Leerungsaktion\n" +" vergangen ist und das Lesen von zusätzlichen\n" +" Eingabedaten den Prozess blockieren würde, dann werden\n" +" alle noch ausstehenden Daten geschrieben" #: src/xz/message.c:1158 #, no-c-format @@ -721,20 +740,24 @@ msgid "" " set memory usage limit for compression, decompression,\n" " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" msgstr "" -" --memlimit-compress=LIMIT\n" -" --memlimit-decompress=LIMIT\n" -" -M, --memlimit=LIMIT Setze Speichernutzungslimit für Komprimierung,\n" -" Dekomprimierung, oder beides; LIMIT ist in Bytes, % RAM,\n" -" oder 0 für Verwenden der Grundeinstellungen." +" --memlimit-compress=BEGRENZUNG\n" +" --memlimit-decompress=BEGRENZUNG\n" +" -M, --memlimit=BEGRENZUNG\n" +" Speicherbedarfsbegrenzung für Kompression,\n" +" Dekompression oder beides setzen; die BEGRENZUNG\n" +" wird in Bytes oder als Prozentsatz RAM angegeben.\n" +" Geben Sie 0 an, um die Grundeinstellungen zu\n" +" verwenden." #: src/xz/message.c:1165 msgid "" " --no-adjust if compression settings exceed the memory usage limit,\n" " give an error instead of adjusting the settings downwards" msgstr "" -" --no-adjust Wenn die Kompressionseinstellungen das Speicher-\n" -" nutzungslimit übersteigen, erzeuge einen Fehler statt\n" -" die Einstellungen nach unten anzupassen." +" --no-adjust Wenn die Kompressionseinstellungen die\n" +" Speicherbedarfsbegrenzung übersteigen, wird ein\n" +" Fehler ausgegeben, statt die Einstellungen\n" +" nach unten anzupassen." #: src/xz/message.c:1171 msgid "" @@ -742,7 +765,7 @@ msgid "" " Custom filter chain for compression (alternative for using presets):" msgstr "" "\n" -" Benutzerdef. Filterkette für Komprimierung (alternativ zu Voreinstellung):" +" Benutzerdefinierte Filterkette für Kompression (alternativ zu Voreinstellung):" #: src/xz/message.c:1180 msgid "" @@ -761,21 +784,21 @@ msgid "" msgstr "" "\n" " --lzma1[=OPTIONEN] LZMA1 oder LZMA2; OPTIONEN ist eine durch Kommata\n" -" --lzma2[=OPTIONEN] Getrennte Liste bestehend aus den folgenden Optionen\n" +" --lzma2[=OPTIONEN] getrennte Liste bestehend aus den folgenden Optionen\n" " (zulässige Werte; Voreinstellung):\n" -" preset=NUM Setze Optionen zurück zu Voreinstellung\n" -" (0-9[e])\n" -" dict=NUM Wörterbuchgröße (4 KiB - 1536 MiB; 8 MiB)\n" -" lc=NUM Anzahl der Literal-Kontext-Bits (0-4; 3)\n" -" lp=NUM Anzahl der Literal-Positions-Bits (0-4; 0)\n" -" pb=NUM Anzahl der Positions-Bits (0-4; 2)\n" -" mode=MODUS Kompressionsmodus (fast, normal; normal)\n" -" nice=NUM 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=NUM Maximale Suchtiefe; 0=automatisch\n" -" (Voreinstellung)" +" preset=ZAHL Optionen auf Voreinstellungsstufe\n" +" zurücksetzen (0-9[e])\n" +" dict=ZAHL Wörterbuchgröße (4 KiB - 1536 MiB; 8 MiB)\n" +" 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)" #: src/xz/message.c:1195 msgid "" @@ -797,7 +820,7 @@ msgstr "" " --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=NUM Start-Offset für Konversion\n" +" start=ZAHL Startversatz für Konversion\n" " (Voreinstellung=0)" #: src/xz/message.c:1207 @@ -826,48 +849,51 @@ msgid "" " -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" msgstr "" -" -q, --quiet Unterdrücke Warnungen; benutze diese Option zweimal\n" -" um auch Fehlermeldungen zu unterdrücken\n" -" -v, --verbose Sei gesprächig; benutze diese Option zweimal um noch\n" -" gesprächiger zu sein" +" -q, --quiet Warnungen unterdrücken; wird diese Option zweimal\n" +" angegeben, werden auch Fehlermeldungen unterdrückt\n" +" -v, --verbose Ausführlicher Modus; wird diese Option zweimal\n" +" angegeben, erfolgen noch ausführlichere Ausgaben" #: src/xz/message.c:1223 msgid " -Q, --no-warn make warnings not affect the exit status" -msgstr " -Q, --no-warn Warnungen verändern nicht den Exit Status" +msgstr " -Q, --no-warn Warnungen verändern nicht den Exit-Status" #: src/xz/message.c:1225 msgid " --robot use machine-parsable messages (useful for scripts)" msgstr "" -" --robot Benutze maschinen-lesbare Meldungen (nützlich für\n" +" --robot Maschinenlesbare Meldungen ausgeben (nützlich für\n" " Skripte)" #: src/xz/message.c:1228 msgid "" " --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" -msgstr " --info-memory Zeige Speicherlimit an und terminiere" +msgstr "" +" --info-memory Gesamtspeicher (RAM) sowie die gegenwärtig aktive\n" +" Speicherbedarfsbegrenzung anzeigen\n" +" und das Programm beenden" #: src/xz/message.c:1231 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" msgstr "" -" -h, --help Zeige kurze Hilfe an (zeigt nur die grundlegenden\n" -" Optionen)\n" -" -H, --long-help Zeige diese lange Hilfe an und terminiere" +" -h, --help Kurze Hilfe anzeigen (zeigt nur die grundlegenden\n" +" Optionen)\n" +" -H, --long-help Diese lange Hilfe anzeigen und das Programm beenden" #: src/xz/message.c:1235 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" msgstr "" -" -h, --help Zeige diese kurze Hilfe an und terminiere\n" -" -H, --long-help Zeige die lange Hilfe an (zeigt auch fortgeschrittene\n" -" Optionen an)" +" -h, --help Diese kurze Hilfe anzeigen und das Programm beenden\n" +" -H, --long-help Die lange Hilfe (und damit auch fortgeschrittene\n" +" Optionen) anzeigen" #: src/xz/message.c:1240 msgid " -V, --version display the version number and exit" -msgstr " -V, --version Zeige Versionsnummer an und terminiere" +msgstr " -V, --version Versionsnummer anzeigen und beenden" #: src/xz/message.c:1242 msgid "" @@ -875,7 +901,7 @@ msgid "" "With no FILE, or when FILE is -, read standard input.\n" msgstr "" "\n" -"Wenn DATEI nicht angegeben wurde, oder DATEI gleich - ist, dann wird von\n" +"Wenn DATEI nicht angegeben wurde oder DATEI gleich - ist, dann wird aus\n" "der Standardeingabe gelesen.\n" #. TRANSLATORS: This message indicates the bug reporting address @@ -885,14 +911,12 @@ msgstr "" #: src/xz/message.c:1248 #, c-format msgid "Report bugs to <%s> (in English or Finnish).\n" -msgstr "" -"Melde Bugs an <%s> (auf Englisch oder Finnisch).\n" -"Melde Übersetzungsfehler an (auf Engl. oder Deutsch).\n" +msgstr "Melden Sie Fehler an <%s> (auf Englisch oder Finnisch).\n" #: src/xz/message.c:1250 #, c-format msgid "%s home page: <%s>\n" -msgstr "%s Homepage: <%s>\n" +msgstr "%s-Homepage: <%s>\n" #: src/xz/message.c:1254 msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." @@ -901,22 +925,22 @@ msgstr "DIES IST EINE NICHT FÜR DEN PRODUKTIVBETRIEB GEEIGNETE ENTWICKLERVERSIO #: src/xz/options.c:86 #, c-format msgid "%s: Options must be `name=value' pairs separated with commas" -msgstr "%s: Optionen müssen in der Form `Name=Wert` gegeben werden, getrennt durch Kommata" +msgstr "%s: Optionen müssen in der Form »Name=Wert« gegeben werden, getrennt durch Kommata" #: src/xz/options.c:93 #, c-format msgid "%s: Invalid option name" -msgstr "%s: Ungültige Option" +msgstr "%s: Ungültiger Optionsname" #: src/xz/options.c:113 #, c-format msgid "%s: Invalid option value" -msgstr "%s: Ungültiger Wert für Option" +msgstr "%s: Ungültiger Optionswert" #: src/xz/options.c:247 #, c-format msgid "Unsupported LZMA1/LZMA2 preset: %s" -msgstr "LZMA1/LZMA2 Voreinstellung ist ungültig: %s" +msgstr "LZMA1/LZMA2-Voreinstellung wird nicht unterstützt: %s" #: src/xz/options.c:355 msgid "The sum of lc and lp must not exceed 4" @@ -930,17 +954,17 @@ msgstr "Der ausgewählte Algorithmus zum Auffinden von Übereinstimmungen brauch #: 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 auf die Standardausgabe geschrieben wird" +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 unbekannte Endung, überspringe" +msgstr "%s: Dateiname hat unbekanntes Suffix, wird übersprungen" #: src/xz/suffix.c:185 #, c-format msgid "%s: File already has `%s' suffix, skipping" -msgstr "%s: Datei hat bereits `%s'-Endung, überspringe" +msgstr "%s: Datei hat bereits das Suffix »%s«, wird übersprungen" #: src/xz/suffix.c:393 #, c-format @@ -950,7 +974,7 @@ msgstr "%s: Ungültige Dateiendung" #: src/xz/util.c:71 #, c-format msgid "%s: Value is not a non-negative decimal integer" -msgstr "%s: Wert ist keine nicht-negative ganze Zahl" +msgstr "%s: Wert ist keine nicht-negative dezimale Ganzzahl" #: src/xz/util.c:113 #, c-format @@ -959,16 +983,16 @@ msgstr "%s: Ungültige Einheit" #: src/xz/util.c:115 msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." -msgstr "Gültige Einheiten sind `KiB' (2^10), `MiB' (2^20), und `GiB' (2^30)." +msgstr "Gültige Einheiten sind »KiB« (2^10), »MiB« (2^20) und »GiB« (2^30)." #: src/xz/util.c:132 #, c-format msgid "Value of the option `%s' must be in the range [%, %]" -msgstr "Wert der Option `%s' muss im Bereich [%, %] sein" +msgstr "Wert der Option »%s« muss im Bereich [%, %] sein" #: src/xz/util.c:257 msgid "Empty filename, skipping" -msgstr "Leerer Dateiname, überspringe" +msgstr "Leerer Dateiname, wird übersprungen" #: src/xz/util.c:271 msgid "Compressed data cannot be read from a terminal" @@ -980,14 +1004,8 @@ msgstr "Komprimierte Daten können nicht auf das Terminal geschrieben werden" #: src/common/tuklib_exit.c:39 msgid "Writing to standard output failed" -msgstr "Schreiben auf die Standardausgabe fehlgeschlagen" +msgstr "Schreiben in die Standardausgabe fehlgeschlagen" #: src/common/tuklib_exit.c:42 msgid "Unknown error" msgstr "Unbekannter Fehler" - -#~ msgid "Error setting O_NONBLOCK on standard input: %s" -#~ msgstr "Fehler beim Setzen des O_NONBLOCK-Flags für Standardausgabe: %s" - -#~ msgid "Error setting O_NONBLOCK on standard output: %s" -#~ msgstr "Fehler beim Setzen von O_NONBLOCK für die Standardausgabe: %s" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..c87924cd --- /dev/null +++ b/po/fi.po @@ -0,0 +1,974 @@ +# Finnish translations for xz package +# Suomenkielinen käännös xz-paketille. +# This file is put in the public domain. +# Lauri Nurmi , 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2020-02-14 18:33+0200\n" +"Last-Translator: Lauri Nurmi \n" +"Language-Team: Finnish \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" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s: Virheellinen argumentti valitsimelle --block-list" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "%s: Liian monta argumenttia valitsimelle --block-list" + +#: src/xz/args.c:102 +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 +#, c-format +msgid "%s: Unknown file format type" +msgstr "%s: Tuntematon tiedostomuototyyppi" + +#: src/xz/args.c:429 src/xz/args.c:437 +#, c-format +msgid "%s: Unsupported integrity check type" +msgstr "%s: Eheystarkistuksen tyyppiä ei tueta" + +#: src/xz/args.c:473 +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 +#, 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 +msgid "Compression support was disabled at build time" +msgstr "Tiivistämistuki on poistettu käytöstä käännösaikana" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "Purkutuki on poistettu käytöstä käännösaikana" + +#: src/xz/coder.c:110 +msgid "Maximum number of filters is four" +msgstr "Suodattimien enimmäismäärä on neljä" + +#: src/xz/coder.c:129 +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 +msgid "Using a preset in raw mode is discouraged." +msgstr "Esiasetusten käyttö raw-tilassa ei ole suositeltavaa." + +#: src/xz/coder.c:161 +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 +msgid "The .lzma format supports only the LZMA1 filter" +msgstr ".lzma-muoto tukee vain LZMA1-suodinta" + +#: src/xz/coder.c:192 +msgid "LZMA1 cannot be used with the .xz format" +msgstr "LZMA1:tä ei voi käyttää .xz-muodon kanssa" + +#: src/xz/coder.c:209 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "Suodinketju on yhteensopimaton valitsimen --flush-timeout kanssa" + +#: src/xz/coder.c:215 +msgid "Switching to single-threaded mode due to --flush-timeout" +msgstr "Vaihdetaan yksisäikeiseen tilaan valitsimen --flush-timeout vuoksi" + +#: src/xz/coder.c:235 +#, c-format +msgid "Using up to % threads." +msgstr "Käytetään enintään % säiettä." + +#: src/xz/coder.c:251 +msgid "Unsupported filter chain or filter options" +msgstr "Ei-tuettu suodinketju tai suotimen asetukset" + +#: src/xz/coder.c:263 +#, c-format +msgid "Decompression will need %s MiB of memory." +msgstr "Purkaminen vaatii %s MiB muistia." + +#: src/xz/coder.c:300 +#, c-format +msgid "Adjusted 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 +#, 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" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "Virhe putkea luodessa: %s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "Hiekkalaatikko on poistettu käytöstä yhteensopimattomien komentoriviargumenttien vuoksi" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "Hiekkalaatikko otettiin onnistuneesti käyttöön" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Hiekkalaatikon ottaminen käyttöön epäonnistui" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s: poll()-kutsu epäonnistui: %s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, 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:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s: Ei voi poistaa: %s" + +#: src/xz/file_io.c:364 +#, c-format +msgid "%s: Cannot set the file owner: %s" +msgstr "%s: Tiedoston omistajaa ei voi asettaa: %s" + +#: src/xz/file_io.c:370 +#, c-format +msgid "%s: Cannot set the file group: %s" +msgstr "%s: Tiedoston ryhmää ei voi asettaa: %s" + +#: src/xz/file_io.c:389 +#, c-format +msgid "%s: Cannot set the file permissions: %s" +msgstr "%s: Tiedoston oikeuksia ei voi asettaa: %s" + +#: src/xz/file_io.c:515 +#, 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:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s: On symbolinen linkki, ohitetaan" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s: On hakemisto, ohitetaan" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s: Ei ole tavallinen tiedosto, ohitetaan" + +#: src/xz/file_io.c:686 +#, 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:693 +#, c-format +msgid "%s: File has sticky bit set, skipping" +msgstr "%s: Tiedostolla on sticky-bitti, ohitetaan" + +#: src/xz/file_io.c:700 +#, 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:788 +#, c-format +msgid "Error restoring the status flags to standard input: %s" +msgstr "Virhe tilalippujen palauttamisessa vakiosyötteelle: %s" + +#: src/xz/file_io.c:836 +#, 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:1014 +#, 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:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s: Tiedoston sulkeminen epäonnistui: %s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, 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:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s: Lukuvirhe: %s" + +#: src/xz/file_io.c:1177 +#, c-format +msgid "%s: Error seeking the file: %s" +msgstr "%s: Virhe tiedostossa siirtymisessä: %s" + +#: src/xz/file_io.c:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s: Odottamaton tiedoston loppu" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s: Kirjoitusvirhe: %s" + +#: src/xz/hardware.c:107 +msgid "Disabled" +msgstr "Pois käytöstä" + +#. TRANSLATORS: Test with "xz --info-memory" to see if +#. the alignment looks nice. +#: src/xz/hardware.c:126 +msgid "Total amount of physical memory (RAM): " +msgstr "Fyysisen muistin kokonaismäärä (RAM): " + +#: src/xz/hardware.c:128 +msgid "Memory usage limit for compression: " +msgstr "Muistinkäytön raja tiivistykselle: " + +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +msgstr "Muistinkäytön raja purkamiselle: " + +#. 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" +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 +msgid "Unknown-2" +msgstr "Tuntematon-2" + +#: src/xz/list.c:73 +msgid "Unknown-3" +msgstr "Tuntematon-3" + +#: src/xz/list.c:75 +msgid "Unknown-5" +msgstr "Tuntematon-5" + +#: src/xz/list.c:76 +msgid "Unknown-6" +msgstr "Tuntematon-6" + +#: src/xz/list.c:77 +msgid "Unknown-7" +msgstr "Tuntematon-7" + +#: src/xz/list.c:78 +msgid "Unknown-8" +msgstr "Tuntematon-8" + +#: src/xz/list.c:79 +msgid "Unknown-9" +msgstr "Tuntematon-9" + +#: src/xz/list.c:81 +msgid "Unknown-11" +msgstr "Tuntematon-11" + +#: src/xz/list.c:82 +msgid "Unknown-12" +msgstr "Tuntematon-12" + +#: src/xz/list.c:83 +msgid "Unknown-13" +msgstr "Tuntematon-13" + +#: src/xz/list.c:84 +msgid "Unknown-14" +msgstr "Tuntematon-14" + +#: src/xz/list.c:85 +msgid "Unknown-15" +msgstr "Tuntematon-15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s: Tiedosto on tyhjä" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s: Liian pieni kelvolliseksi .xz-tiedostoksi" + +#. 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" +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 +msgid "Yes" +msgstr "Kyllä" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "Ei" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, 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 +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 +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 +msgid "--list does not support reading from standard input" +msgstr "--list ei tue lukemista vakiosyötteestä" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s: Virhe luettaessa tiedostonimiä: %s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s: Odottamaton syötteen loppu tiedostonimiä luettaessa" + +#: src/xz/main.c:120 +#, c-format +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 +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 +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ä" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "Sisäinen virhe (ohjelmistovika)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "Signaalinkäsittelimiä ei voi muodostaa" + +#: src/xz/message.c:793 +msgid "No integrity check; not verifying file integrity" +msgstr "Ei eheystarkastusta; ei varmenneta tiedoston eheyttä" + +#: src/xz/message.c:796 +msgid "Unsupported type of integrity check; not verifying file integrity" +msgstr "Ei-tuettu eheystarkastuksen tyyppi; ei varmenneta tiedoston eheyttä" + +#: src/xz/message.c:803 +msgid "Memory usage limit reached" +msgstr "Muistinkäytön raja saavutettu" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "Tiedostomuotoa ei tunnistettu" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "Ei-tuetut valitsimet" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "Tiivistetty data on turmeltunut" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "Odottamaton syötteen loppu" + +#: src/xz/message.c:848 +#, 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:876 +#, 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:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s: Suodinketju: %s\n" + +#: src/xz/message.c:1053 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Komento ”%s --help” antaa lisää tietoa." + +#: src/xz/message.c:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" +"Käyttö: %s [VALITSIN]... [TIEDOSTO]...\n" +"Tiivistä tai pura .xz-muotoisia TIEDOSTOja.\n" +"\n" + +#: src/xz/message.c:1086 +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:1090 +msgid " Operation mode:\n" +msgstr " Toimintatila:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" +" -z, --compress pakota tiivistys\n" +" -d, --decompress pakota purku\n" +" -t, --test testaa tiivistetyn tiedoston eheys\n" +" -l, --list näytä tietoja .xz-tiedostoista" + +#: src/xz/message.c:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +" Toimintomääreet:\n" + +#: src/xz/message.c:1102 +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 "" +" -k, --keep säilytä (poistamatta) syötetiedostot\n" +" -f, --force pakota tulostiedostojen ylikirjoitus ja pura/tiivistä\n" +" linkit\n" +" -c, --stdout kirjoita vakiotulosteeseen äläkä poista syötetiedostoja" + +#: src/xz/message.c:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" +" --single-stream pura vain ensimmäinen virta, ja ohita\n" +" hiljaisesti mahdollinen jäljellä oleva syötedata" + +#: src/xz/message.c:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +msgstr "" +" --no-sparse älä luo hajanaisia tiedostoja purettaessa\n" +" -S, --suffix=.PÄÄTE käytä ”.PÄÄTE”-päätettä tiivistetyille tiedostoille\n" +" --files[=TIED] lue käsiteltävät tiedostonimet TIEDostosta; jos TIED\n" +" jätetään antamatta, tiedostonimet luetaan vakiosyötteestä;\n" +" tiedostonimet on päätettävä rivinvaihtomerkillä\n" +" --files0[=TIED] kuten --files mutta käytä päättämiseen nul-merkkiä" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" +"\n" +" Tiedostomuodon ja tiivistyksen perusvalitsimet:\n" + +#: src/xz/message.c:1122 +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'" +msgstr "" +" -F, --format=MUOTO tuotettava tai luettava tiedostomuotoa; vaihtoehdot\n" +" ovat ”auto” (oletus), ”xz”, ”lzma” ja ”raw”\n" +" -C, --check=CHECK eheystarkastuksen tyyppi: ”none” (käytä varoen),\n" +" ”crc32”, ”crc64” (oletus) tai ”sha256”" + +#: src/xz/message.c:1127 +msgid " --ignore-check don't verify the integrity check when decompressing" +msgstr " --ignore-check älä suorita eheystarkastusta purettaessa" + +#: src/xz/message.c:1131 +msgid "" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" +msgstr "" +" -0 ... -9 tiivistyksen esiasetus; oletus on 6; ota tiivistyksen\n" +" *ja* purun muistinkäyttö huomioon ennen kuin käytät\n" +" arvoja 7–9!" + +#: src/xz/message.c:1135 +msgid "" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" +" does not affect decompressor memory requirements" +msgstr "" +" -e, --extreme yritä parantaa tiivistyssuhdetta käyttämällä enemmän\n" +" suoritinaikaa; ei vaikuta purkimen muistivaatimuksiin" + +#: src/xz/message.c:1139 +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 "" +" -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:1144 +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 "" +" --block-size=KOKO\n" +" aloita uusi .xz-lohko aina KOKO syötetavun jälkeen; käytä\n" +" tätä säikeistetyn tiivistyksen lohkokoon asettamiseen" + +#: src/xz/message.c:1148 +msgid "" +" --block-list=SIZES\n" +" start a new .xz block after the given comma-separated\n" +" intervals of uncompressed data" +msgstr "" +" --block-list=KOOT\n" +" aloita uusi .xz-lohko kun tiivistämätöntä dataa on\n" +" käsitelty pilkuilla erotellut tavumäärät" + +# FIXME: tarvitaan kiva suomenkielinen termi block-verbille tässä merkityksessä +#: src/xz/message.c:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" +" --flush-timeout=AIKAKATKAISU\n" +" jos tiivistettäessä on kulunut yli AIKAKATKAISU ms\n" +" edellisestä huuhtomisesta ja syötteen lukemisen\n" +" jatkaminen pysähtyisi, kaikki odottava data huuhdellaan" + +#: src/xz/message.c:1158 +#, 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" +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" + +#: src/xz/message.c:1165 +msgid "" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" +msgstr "" +" --no-adjust jos tiivistysasetukset ylittävät muistinkäytön rajan,\n" +" anna virhe äläkä pudota asetuksia alaspäin" + +#: src/xz/message.c:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" +"\n" +" Mukautettu suodinketju tiivistykselle (vaihtoehto esiasetuksille):" + +#: src/xz/message.c:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" +"\n" +" --lzma1[=ASET] LZMA1 tai LZMA2; ASETukset ovat yksi tai useampi\n" +" --lzma2[=ASET] seuraavista asetuksista pilkuilla eroteltuina\n" +" (kelvolliset arvot; oletus):\n" +" preset=ESI palauta asetukset esiasetukseen (0-9[e])\n" +" dict=LUKU sanaston koko (4KiB – 1536MiB; 8MiB)\n" +" lc=LUKU literal context -bittien määrä (0-4; 3)\n" +" lp=LUKU literal position -bittien määrä (0-4; 0)\n" +" pb=LUKU position -bittien määrä (0-4; 2)\n" +" mode=TILA tiivistystila (fast, normal; normal)\n" +" nice=LUKU täsmäävyyden nice-pituus (2–273; 64)\n" +" mf=NIMI täsmäävyydenetsin (hc3, hc4, bt2, bt3,\n" +" bt4; bt4)\n" +" depth=LUKU enimmäishakusyvyys; 0=automaattinen (oletus)" + +#: src/xz/message.c:1195 +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)" +msgstr "" +"\n" +" --x86[=ASET] x86:n BCJ-suodin (32- ja 64-bittiset)\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:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" +"\n" +" --delta[=ASET] Muutossuodin; kelvolliset ASETukset (kelv. arvot; oletus):\n" +" dist=LUKU toisistaan vähennettävien tavujen\n" +" välinen etäisyys (1–256; 1)" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +" Muut valitsimet:\n" + +#: src/xz/message.c:1218 +msgid "" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" +" -v, --verbose be verbose; specify twice for even more verbose" +msgstr "" +" -q, --quiet vaienna varoitukset; kahdesti antamalla myös virheet\n" +" -v, --verbose ole lavea; kahdesti antamalla vieläkin laveampi" + +#: src/xz/message.c:1223 +msgid " -Q, --no-warn make warnings not affect the exit status" +msgstr " -Q, --no-warn älkööt varoitukset vaikuttako paluuarvoon" + +#: src/xz/message.c:1225 +msgid " --robot use machine-parsable messages (useful for scripts)" +msgstr " --robot käytä koneluettavia viestejä (sopii skripteihin)" + +#: src/xz/message.c:1228 +msgid "" +" --info-memory display the total amount of RAM and the currently active\n" +" memory usage limits, and exit" +msgstr "" +" --info-memory näytä RAM-muistin kokonaismäärä ja parhaillaan\n" +" vallitsevat muistinkäytön rajat, ja poistu" + +#: src/xz/message.c:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -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:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -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:1240 +msgid " -V, --version display the version number and exit" +msgstr " -V, --version näytä versionumero ja poistu" + +#: src/xz/message.c:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"Jos TIEDOSTOa ei ole annettu, tai se on ”-”, luetaan vakiosyötettä.\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, c-format +msgid "Report bugs to <%s> (in English or Finnish).\n" +msgstr "Ilmoita ohjelmistovioista (suomeksi) osoitteeseen <%s>.\n" + +#: src/xz/message.c:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s -kotisivu: <%s>\n" + +#: src/xz/message.c:1254 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "TÄMÄ ON KEHITYSVERSIO, JOTA EI OLE TARKOITETTU TUOTANTOKÄYTTÖÖN." + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s: Asetusten on oltava pilkuilla eroteltuja ”nimi=arvo” -pareja" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s: Virheellinen asetuksen nimi" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s: Virheellinen asetuksen arvo" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "Ei-tuettu LZMA1/LZMA2-esiasetus: %s" + +#: src/xz/options.c:355 +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 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "Valittu täsmäävyydenetsin vaatii vähintään nice-arvon=%" + +#: 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 +#, c-format +msgid "%s: File already has `%s' suffix, skipping" +msgstr "%s: Tiedostolla on jo ”%s”-pääte, ohitetaan" + +#: src/xz/suffix.c:393 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s: Virheellinen tiedostonimen pääte" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s: Arvo ei ole ei ole epänegatiivinen kymmenkantainen kokonaisluku" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s: Tuntematon kerroin" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "Kelvolliset kertoimet ovat ”KiB” (2¹⁰), ”MiB” (2²⁰) ja ”GiB” (2³⁰)." + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "Valitsimen ”%s” arvon on oltava välillä [%, %]" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "Tyhjä tiedostonimi, ohitetaan" + +#: src/xz/util.c:271 +msgid "Compressed data cannot be read from a terminal" +msgstr "Tiivistettyä dataa ei voi lukea päätteestä" + +#: src/xz/util.c:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "Tiivistettyä dataa ei voi kirjoittaa päätteeseen" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "Vakiotulosteeseen kirjoitus epäonnistui" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "Tuntematon virhe" diff --git a/po/fr.po b/po/fr.po index b85f46ba..27f62616 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,16 +1,18 @@ # XZ Utils French Translation # This file is put in the public domain. # Adrien Nader , 2011-2014. +# Stéphane Aulery , 2019. # msgid "" msgstr "" -"Project-Id-Version: xz-utils\n" +"Project-Id-Version: xz-5.2.4\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2014-11-25 20:23+0100\n" -"PO-Revision-Date: 2010-09-24 21;12+0200\n" -"Last-Translator: Adrien Nader \n" -"Language-Team: None\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-05-12 05:46+0200\n" +"Last-Translator: Stéphane Aulery \n" +"Language-Team: French \n" "Language: fr\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,16 +21,16 @@ msgstr "" #: src/xz/args.c:63 #, c-format msgid "%s: Invalid argument to --block-list" -msgstr "" +msgstr "%s : argument de l'option --block-list invalide" #: src/xz/args.c:73 #, c-format msgid "%s: Too many arguments to --block-list" -msgstr "" +msgstr "%s : trop d'arguments pour l'option --block-list" #: src/xz/args.c:102 msgid "0 can only be used as the last element in --block-list" -msgstr "" +msgstr "0 peut seulement être utilisé en dernier élément de --block-list" #: src/xz/args.c:406 #, c-format @@ -49,6 +51,14 @@ msgstr "Un seul fichier peut être spécifié avec `--files' ou `--files0'." msgid "The environment variable %s contains too many arguments" msgstr "La variable d'environnement %s contient trop d'arguments" +#: src/xz/args.c:643 +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 +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 msgid "Maximum number of filters is four" msgstr "Le nombre maximal de filtres est quatre" @@ -75,42 +85,54 @@ msgstr "Le filtre LZMA1 ne peut être utilisé avec le format .xz" #: src/xz/coder.c:209 msgid "The filter chain is incompatible with --flush-timeout" -msgstr "" +msgstr "La Chaine de filtre est incompatible avec --flush-timeout" #: src/xz/coder.c:215 msgid "Switching to single-threaded mode due to --flush-timeout" -msgstr "" +msgstr "Bascule en mode mono-processus à cause de --flush-timeout" -#: src/xz/coder.c:234 +#: src/xz/coder.c:235 #, c-format msgid "Using up to % threads." msgstr "Jusqu'à % threads seront utilisés." -#: src/xz/coder.c:247 +#: src/xz/coder.c:251 msgid "Unsupported filter chain or filter options" msgstr "Enchaînement ou options de filtres non pris en charge" -#: src/xz/coder.c:255 +#: src/xz/coder.c:263 #, 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:290 +#: src/xz/coder.c:300 #, c-format msgid "Adjusted 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:344 +#: src/xz/coder.c:354 #, 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" -#: src/xz/file_io.c:90 +#: src/xz/file_io.c:110 src/xz/file_io.c:118 #, c-format msgid "Error creating a pipe: %s" msgstr "Impossible de créer un tube anonyme (pipe) : %s" -#: src/xz/file_io.c:166 +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "La sandbox est désactivée car elle est incompatible avec les arguments passés" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "La sandboxe a été activée avec succès" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Echec de l'activation de la sandboxe" + +#: src/xz/file_io.c:262 #, c-format msgid "%s: poll() failed: %s" msgstr "%s : L'appel à la fonction poll() a échoué : %s" @@ -125,27 +147,27 @@ msgstr "%s : L'appel à la fonction poll() a échoué : %s" #. 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:236 +#: src/xz/file_io.c:332 #, 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:243 src/xz/file_io.c:761 +#: src/xz/file_io.c:339 src/xz/file_io.c:878 #, c-format msgid "%s: Cannot remove: %s" msgstr "%s : Impossible de supprimer : %s" -#: src/xz/file_io.c:268 +#: src/xz/file_io.c:364 #, 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:274 +#: src/xz/file_io.c:370 #, 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:293 +#: src/xz/file_io.c:389 #, c-format msgid "%s: Cannot set the file permissions: %s" msgstr "%s : Impossible de modifier les permissions du fichier : %s" @@ -158,94 +180,84 @@ msgstr "%s : Impossible de modifier les permissions du fichier : %s" # - 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:399 +#: src/xz/file_io.c:515 #, c-format msgid "Error getting the file status flags from standard input: %s" -msgstr "" +msgstr "Echec de la lecture du drapeau d'état du fichier depuis la sortie standard : %s" -#: src/xz/file_io.c:408 -#, c-format -msgid "Error setting O_NONBLOCK on standard input: %s" -msgstr "Impossible d'établir le drapeau O_NONBLOCK sur la sortie standard : %s" - -#: src/xz/file_io.c:460 src/xz/file_io.c:522 +#: src/xz/file_io.c:572 src/xz/file_io.c:634 #, c-format msgid "%s: Is a symbolic link, skipping" msgstr "%s est un lien symbolique : ignoré" -#: src/xz/file_io.c:551 +#: src/xz/file_io.c:663 #, c-format msgid "%s: Is a directory, skipping" msgstr "%s est un répertoire : ignoré" -#: src/xz/file_io.c:557 +#: src/xz/file_io.c:669 #, c-format msgid "%s: Not a regular file, skipping" msgstr "%s n'est pas un fichier régulier : ignoré" -#: src/xz/file_io.c:574 +#: src/xz/file_io.c:686 #, 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:581 +#: src/xz/file_io.c:693 #, 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:588 +#: src/xz/file_io.c:700 #, 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é" # See note from translator above titled "file status flags". -#: src/xz/file_io.c:668 +#: src/xz/file_io.c:788 #, c-format msgid "Error restoring the status flags to standard input: %s" -msgstr "" +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:714 +#: src/xz/file_io.c:836 #, c-format msgid "Error getting the file status flags from standard output: %s" -msgstr "" - -#: src/xz/file_io.c:723 -#, c-format -msgid "Error setting O_NONBLOCK on standard output: %s" -msgstr "Impossible d'activer le drapeau O_NONBLOCK sur la sortie standard : %s" +msgstr "Erreur de lecture du drapeau d'état du fichier depuis la sortie standard : %s" -#: src/xz/file_io.c:896 +#: src/xz/file_io.c:1014 #, 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:908 +#: src/xz/file_io.c:1026 #, c-format msgid "%s: Closing the file failed: %s" msgstr "%s : Impossible de fermer le fichier : %s" -#: src/xz/file_io.c:944 src/xz/file_io.c:1170 +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 #, 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:1039 +#: src/xz/file_io.c:1157 #, c-format msgid "%s: Read error: %s" msgstr "%s : Erreur d'écriture : %s" -#: src/xz/file_io.c:1059 +#: src/xz/file_io.c:1177 #, 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:1069 +#: src/xz/file_io.c:1187 #, c-format msgid "%s: Unexpected end of file" msgstr "%s : Fin de fichier inattendue" -#: src/xz/file_io.c:1128 +#: src/xz/file_io.c:1246 #, c-format msgid "%s: Write error: %s" msgstr "%s : Erreur d'écriture : %s" @@ -342,41 +354,41 @@ msgstr "%s : Trop petit pour être un fichier xz valide." #. 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:671 +#: src/xz/list.c:677 msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" msgstr "Flux Blocs Compressé Décompressé Ratio Vérif. Nom de fichier" -#: src/xz/list.c:711 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" msgstr " Flux : %s\n" -#: src/xz/list.c:713 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" msgstr " Blocs : %s\n" -#: src/xz/list.c:715 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" msgstr " Taille données avec compression : %s\n" -#: src/xz/list.c:718 +#: src/xz/list.c:724 #, c-format msgid " Uncompressed size: %s\n" msgstr " Taille données sans compression : %s\n" -#: src/xz/list.c:721 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" msgstr " Ratio : %s\n" -#: src/xz/list.c:723 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" msgstr " Vérification : %s\n" -#: src/xz/list.c:724 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" msgstr " Octets de rembourrage du flux : %s\n" @@ -384,7 +396,7 @@ 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:752 +#: src/xz/list.c:758 msgid "" " Streams:\n" " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" @@ -394,7 +406,7 @@ msgstr "" #. TRANSLATORS: The second line is column headings. All #. except Check are right aligned; Check is left aligned. -#: src/xz/list.c:807 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" @@ -410,57 +422,57 @@ msgstr "" #. 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:819 +#: 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:897 src/xz/list.c:1072 +#: 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:899 src/xz/list.c:1074 +#: 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:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Oui" -#: src/xz/list.c:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "Non" -#: src/xz/list.c:901 src/xz/list.c:1076 +#: src/xz/list.c:907 src/xz/list.c:1082 #, 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:1051 +#: src/xz/list.c:1057 #, 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:1064 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Totaux :" -#: src/xz/list.c:1065 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" msgstr " Nombre de fichiers : %s\n" -#: src/xz/list.c:1140 +#: src/xz/list.c:1146 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:1146 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" msgstr "--list est incompatible avec la lecture sur l'entrée standard" @@ -483,7 +495,7 @@ msgstr "%s : Caractère NULL détecté lors de la lecture des noms de fichiers ; 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:231 +#: src/xz/main.c:252 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" @@ -491,68 +503,68 @@ msgstr "Impossible de lire à la fois les données et les noms de fichiers depui #. 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:713 +#: src/xz/message.c:714 #, c-format msgid "%s: " msgstr "%s : " -#: src/xz/message.c:776 src/xz/message.c:826 +#: src/xz/message.c:777 src/xz/message.c:827 msgid "Internal error (bug)" msgstr "Erreur interne (bug)" -#: src/xz/message.c:783 +#: src/xz/message.c:784 msgid "Cannot establish signal handlers" msgstr "Impossible d'installer le gestionnaire de signaux" -#: src/xz/message.c:792 +#: src/xz/message.c:793 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:795 +#: src/xz/message.c:796 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:802 +#: src/xz/message.c:803 msgid "Memory usage limit reached" msgstr "Limite d'utilisation mémoire atteinte" -#: src/xz/message.c:805 +#: src/xz/message.c:806 msgid "File format not recognized" msgstr "Format de fichier inconnu" -#: src/xz/message.c:808 +#: src/xz/message.c:809 msgid "Unsupported options" msgstr "Options non prises en charge" -#: src/xz/message.c:811 +#: src/xz/message.c:812 msgid "Compressed data is corrupt" msgstr "Les données compressées sont corrompues" -#: src/xz/message.c:814 +#: src/xz/message.c:815 msgid "Unexpected end of input" msgstr "Fin des données inattendue " -#: src/xz/message.c:847 +#: src/xz/message.c:848 #, 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:875 +#: src/xz/message.c:876 #, 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:1042 +#: src/xz/message.c:1043 #, c-format msgid "%s: Filter chain: %s\n" msgstr "%s : Enchaînement de filtres : %s\n" -#: src/xz/message.c:1052 +#: src/xz/message.c:1053 #, c-format msgid "Try `%s --help' for more information." msgstr "Éxécutez `%s --help' pour obtenir davantage d'informations." -#: src/xz/message.c:1078 +#: src/xz/message.c:1079 #, c-format msgid "" "Usage: %s [OPTION]... [FILE]...\n" @@ -563,17 +575,17 @@ msgstr "" "Compresse ou decompresse FICHIER(s) au format .xz.\n" "\n" -#: src/xz/message.c:1085 +#: src/xz/message.c:1086 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:1089 +#: src/xz/message.c:1090 msgid " Operation mode:\n" msgstr " Mode d'opération :\n" -#: src/xz/message.c:1092 +#: src/xz/message.c:1093 msgid "" " -z, --compress force compression\n" " -d, --decompress force decompression\n" @@ -585,7 +597,7 @@ msgstr "" " -t, --test tester l'intégrité du fichier compressé\n" " -l, --list lister les informations sur les fichiers .xz" -#: src/xz/message.c:1098 +#: src/xz/message.c:1099 msgid "" "\n" " Operation modifiers:\n" @@ -593,7 +605,7 @@ msgstr "" "\n" " Modificateurs :\n" -#: src/xz/message.c:1101 +#: src/xz/message.c:1102 msgid "" " -k, --keep keep (don't delete) input files\n" " -f, --force force overwrite of output file and (de)compress links\n" @@ -605,7 +617,7 @@ msgstr "" " -c, --stdout écrire sur la sortie standard et ne pas supprimer les\n" " fichiers d'entrée" -#: src/xz/message.c:1107 +#: src/xz/message.c:1108 msgid "" " --single-stream decompress only the first stream, and silently\n" " ignore possible remaining input data" @@ -613,7 +625,7 @@ msgstr "" " --single-stream décompresser uniquement le premier flux et ignorer\n" " silencieusement les données éventuellement restantes" -#: src/xz/message.c:1110 +#: src/xz/message.c:1111 msgid "" " --no-sparse do not create sparse files when decompressing\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" @@ -629,7 +641,7 @@ msgstr "" " 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:1119 +#: src/xz/message.c:1120 msgid "" "\n" " Basic file format and compression options:\n" @@ -637,7 +649,7 @@ msgstr "" "\n" " Options basiques de format de fichier et de compression :\n" -#: src/xz/message.c:1121 +#: src/xz/message.c:1122 msgid "" " -F, --format=FMT file format to encode or decode; possible values are\n" " `auto' (default), `xz', `lzma', and `raw'\n" @@ -649,13 +661,13 @@ msgstr "" " -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:1126 +#: src/xz/message.c:1127 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:1130 +#: src/xz/message.c:1131 msgid "" " -0 ... -9 compression preset; default is 6; take compressor *and*\n" " decompressor memory usage into account before using 7-9!" @@ -664,7 +676,7 @@ msgstr "" " l'utilisation mémoire du compresseur *et* du décompresseur\n" " avant d'utiliser 7, 8 ou 9 !" -#: src/xz/message.c:1134 +#: src/xz/message.c:1135 msgid "" " -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" @@ -673,7 +685,7 @@ msgstr "" " de temps processeur ;\n" " n'affecte pas les besoins mémoire du décompresseur" -#: src/xz/message.c:1138 +#: src/xz/message.c:1139 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" @@ -682,7 +694,7 @@ msgstr "" " valeur 0 est spéciale et équivaut au nombre de processeurs\n" " de la machine" -#: src/xz/message.c:1143 +#: src/xz/message.c:1144 msgid "" " --block-size=SIZE\n" " start a new .xz block after every SIZE bytes of input;\n" @@ -692,7 +704,7 @@ msgstr "" " 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:1147 +#: src/xz/message.c:1148 msgid "" " --block-list=SIZES\n" " start a new .xz block after the given comma-separated\n" @@ -702,15 +714,19 @@ msgstr "" " 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:1151 +#: src/xz/message.c:1152 msgid "" " --flush-timeout=TIMEOUT\n" " when compressing, if more than TIMEOUT milliseconds has\n" " passed since the previous flush and reading more input\n" " would block, all pending data is flushed out" msgstr "" +" --flush-timeout=TIMEOUT\n" +" pendant la compression, si plus de TIMEOUT ms ont passées\n" +" depuis le dernier flush et que la lecture est bloquée,\n" +" toutes les données en attente snt écrites" -#: src/xz/message.c:1157 +#: src/xz/message.c:1158 #, no-c-format msgid "" " --memlimit-compress=LIMIT\n" @@ -726,7 +742,7 @@ msgstr "" " 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:1164 +#: src/xz/message.c:1165 msgid "" " --no-adjust if compression settings exceed the memory usage limit,\n" " give an error instead of adjusting the settings downwards" @@ -735,7 +751,7 @@ msgstr "" " d'utilisation mémoire, renvoyer une erreur plutôt que de\n" " diminuer les réglages" -#: src/xz/message.c:1170 +#: src/xz/message.c:1171 msgid "" "\n" " Custom filter chain for compression (alternative for using presets):" @@ -743,7 +759,7 @@ msgstr "" "\n" " Chaîne de filtres de compression personnalisée (en lieu des préréglages) :" -#: src/xz/message.c:1179 +#: src/xz/message.c:1180 msgid "" "\n" " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" @@ -772,7 +788,7 @@ msgstr "" " depth=NUM profondeur de recherche maximale ;\n" " 0=automatique (par défaut)" -#: src/xz/message.c:1194 +#: src/xz/message.c:1195 msgid "" "\n" " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" @@ -794,7 +810,7 @@ msgstr "" " OPTS valides pour tous les filtres BCJ :\n" " start=NUM position de début de la conversion (défaut=0)" -#: src/xz/message.c:1206 +#: src/xz/message.c:1207 msgid "" "\n" " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" @@ -806,7 +822,7 @@ msgstr "" " dist=NUM distance entre les octets soustraits les\n" " uns aux autres (1-256 ; 1)" -#: src/xz/message.c:1214 +#: src/xz/message.c:1215 msgid "" "\n" " Other options:\n" @@ -814,7 +830,7 @@ msgstr "" "\n" " Autres options :\n" -#: src/xz/message.c:1217 +#: src/xz/message.c:1218 msgid "" " -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" @@ -823,17 +839,17 @@ msgstr "" " aussi masquer les erreurs\n" " -v, --verbose être bavard ; spécifier deux fois pour l'être davantage" -#: src/xz/message.c:1222 +#: src/xz/message.c:1223 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:1224 +#: src/xz/message.c:1225 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:1227 +#: src/xz/message.c:1228 msgid "" " --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" @@ -841,7 +857,7 @@ msgstr "" " --info-memory afficher la quantité totale de RAM ainsi que la limite\n" " actuelle d'utilisation mémoire puis quitter" -#: src/xz/message.c:1230 +#: src/xz/message.c:1231 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" @@ -849,7 +865,7 @@ msgstr "" " -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:1234 +#: src/xz/message.c:1235 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" @@ -857,11 +873,11 @@ msgstr "" " -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:1239 +#: src/xz/message.c:1240 msgid " -V, --version display the version number and exit" msgstr " -V, --version afficher le numéro de version puis quitter" -#: src/xz/message.c:1241 +#: src/xz/message.c:1242 msgid "" "\n" "With no FILE, or when FILE is -, read standard input.\n" @@ -873,21 +889,21 @@ msgstr "" #. 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:1247 +#: src/xz/message.c:1248 #, c-format msgid "Report bugs to <%s> (in English or Finnish).\n" msgstr "" -"Signaler les bogues à <%s> (en anglais ou en finlandais).\n" -"Signaler les bogues de traduction à .\n" +"Signaler les bogues à <%s> (en anglais ou en finnois).\n" +"Signaler les bogues de traduction à .\n" -#: src/xz/message.c:1249 +#: src/xz/message.c:1250 #, c-format msgid "%s home page: <%s>\n" msgstr "Page du projet %s : <%s>\n" -#: src/xz/message.c:1253 +#: src/xz/message.c:1254 msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." -msgstr "" +msgstr "CECI EST UNE VERSION DE DEVELOPPEMENT QUI NE DOIT PAS ÊTRE UTILISEE EN PRODUCTION." #: src/xz/options.c:86 #, c-format @@ -976,3 +992,9 @@ msgstr "Impossible d'écrire vers la sortie standard" #: src/common/tuklib_exit.c:42 msgid "Unknown error" msgstr "Erreur inconnue" + +#~ msgid "Error setting O_NONBLOCK on standard input: %s" +#~ msgstr "Impossible d'établir le drapeau O_NONBLOCK sur la sortie standard : %s" + +#~ msgid "Error setting O_NONBLOCK on standard output: %s" +#~ msgstr "Impossible d'activer le drapeau O_NONBLOCK sur la sortie standard : %s" diff --git a/po/it.po b/po/it.po index dc1cfbf2..2b7afbd1 100644 --- a/po/it.po +++ b/po/it.po @@ -1,23 +1,24 @@ -# Italian translation for xz-utils -# This file is in the public domain +# Italian translation for xz +# This file is put in the public domain. # Gruppo traduzione italiano di Ubuntu-it , 2009, 2010 # Lorenzo De Liso , 2010. -# Milo Casagrande , 2009, 2010, 2011, 2014. +# Milo Casagrande , 2009, 2010, 2011, 2014, 2019. # msgid "" msgstr "" -"Project-Id-Version: xz-utils\n" +"Project-Id-Version: xz 5.2.4\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2014-09-14 21:56+0300\n" -"PO-Revision-Date: 2014-10-20 13:16+0100\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-03-04 14:21+0100\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" "Language: it\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-16 19:16+0000\n" -"X-Generator: Poedit 1.6.10\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/xz/args.c:63 @@ -53,15 +54,21 @@ msgstr "Solo un file può essere specificato con \"--files\" o \"--files0\"." msgid "The environment variable %s contains too many arguments" msgstr "La variabile d'ambiente %s contiene troppi argomenti" +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "Il supporto alla compressione è stato disabilitato in fase di compilazione" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "Il supporto alla decompressione è stato disabilitato in fase di compilazione" + #: src/xz/coder.c:110 msgid "Maximum number of filters is four" msgstr "Il numero massimo di filtri è quattro" #: src/xz/coder.c:129 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." +msgstr "Il limite dell'uso della memoria è troppo basso per l'impostazione del filtro dato." #: src/xz/coder.c:159 msgid "Using a preset in raw mode is discouraged." @@ -69,8 +76,7 @@ msgstr "Non è consigliato usare un preset nella modalità raw." #: src/xz/coder.c:161 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." +msgstr "Le opzioni esatte per i preset possono variare tra le versioni del software." #: src/xz/coder.c:184 msgid "The .lzma format supports only the LZMA1 filter" @@ -88,44 +94,48 @@ msgstr "La catena di filtri non è compatibile con --flush-timeout" 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:234 +#: src/xz/coder.c:235 #, c-format msgid "Using up to % threads." msgstr "Vengono usati circa % thread." -#: src/xz/coder.c:247 +#: src/xz/coder.c:251 msgid "Unsupported filter chain or filter options" msgstr "Catena di filtri od opzioni del filtro non supportata" -#: src/xz/coder.c:255 +#: src/xz/coder.c:263 #, c-format msgid "Decompression will need %s MiB of memory." msgstr "L'estrazione necessita di %s MiB di memoria." -#: src/xz/coder.c:290 +#: src/xz/coder.c:300 #, c-format -msgid "" -"Adjusted 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" +msgid "Adjusted 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:344 +#: src/xz/coder.c:354 #, 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" +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" -#: src/xz/file_io.c:90 +#: src/xz/file_io.c:110 src/xz/file_io.c:118 #, c-format msgid "Error creating a pipe: %s" msgstr "Errore nel creare una pipe: %s" -#: src/xz/file_io.c:166 +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "La modalità sandbox è disabilitata a causa di argomenti a riga di comando non compatibili" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "Sandbox abilitata con successo" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Abilitazione modalità sandbox non riuscita" + +#: src/xz/file_io.c:262 #, c-format msgid "%s: poll() failed: %s" msgstr "%s: poll() non riuscita: %s" @@ -140,120 +150,107 @@ msgstr "%s: poll() non riuscita: %s" #. 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:236 +#: src/xz/file_io.c:332 #, 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:243 src/xz/file_io.c:761 +#: src/xz/file_io.c:339 src/xz/file_io.c:878 #, c-format msgid "%s: Cannot remove: %s" msgstr "%s: impossibile rimuovere: %s" -#: src/xz/file_io.c:268 +#: src/xz/file_io.c:364 #, c-format msgid "%s: Cannot set the file owner: %s" msgstr "%s: impossibile impostare il proprietario del file: %s" -#: src/xz/file_io.c:274 +#: src/xz/file_io.c:370 #, c-format msgid "%s: Cannot set the file group: %s" msgstr "%s: impossibile impostare il gruppo del file: %s" -#: src/xz/file_io.c:293 +#: src/xz/file_io.c:389 #, c-format msgid "%s: Cannot set the file permissions: %s" msgstr "%s: impossibile impostare i permessi del file: %s" -#: src/xz/file_io.c:399 +#: src/xz/file_io.c:515 #, 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:408 -#, c-format -msgid "Error setting O_NONBLOCK on standard input: %s" -msgstr "Errore nell'impostare O_NONBLOCK sullo standard input: %s" +msgstr "Errore nel recuperare le flag di stato del file dallo standard input: %s" -#: src/xz/file_io.c:460 src/xz/file_io.c:522 +#: src/xz/file_io.c:572 src/xz/file_io.c:634 #, c-format msgid "%s: Is a symbolic link, skipping" msgstr "%s: è un collegamento simbolico, viene saltato" -#: src/xz/file_io.c:551 +#: src/xz/file_io.c:663 #, c-format msgid "%s: Is a directory, skipping" msgstr "%s: è una directory, viene saltata" -#: src/xz/file_io.c:557 +#: src/xz/file_io.c:669 #, c-format msgid "%s: Not a regular file, skipping" msgstr "%s: non è un file regolare, viene saltato" -#: src/xz/file_io.c:574 +#: src/xz/file_io.c:686 #, 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:581 +#: src/xz/file_io.c:693 #, 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:588 +#: src/xz/file_io.c:700 #, 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:668 +#: src/xz/file_io.c:788 #, 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:714 +#: src/xz/file_io.c:836 #, 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:723 -#, c-format -msgid "Error setting O_NONBLOCK on standard output: %s" -msgstr "Errore nell'impostare O_NONBLOCK sullo standard output: %s" +msgstr "Errore nel recuperare le flag di stato del file dallo standard output: %s" -#: src/xz/file_io.c:896 +#: src/xz/file_io.c:1014 #, 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:908 +#: src/xz/file_io.c:1026 #, c-format msgid "%s: Closing the file failed: %s" msgstr "%s: chiusura del file non riuscita: %s" -#: src/xz/file_io.c:944 src/xz/file_io.c:1170 +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 #, 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" +msgstr "%s: posizionamento non riuscito nel tentativo di creare un file sparso: %s" -#: src/xz/file_io.c:1039 +#: src/xz/file_io.c:1157 #, c-format msgid "%s: Read error: %s" msgstr "%s: errore di lettura: %s" -#: src/xz/file_io.c:1059 +#: src/xz/file_io.c:1177 #, c-format msgid "%s: Error seeking the file: %s" msgstr "%s: errore nel cercare il file: %s" -#: src/xz/file_io.c:1069 +#: src/xz/file_io.c:1187 #, c-format msgid "%s: Unexpected end of file" msgstr "%s: fine del file inaspettata" -#: src/xz/file_io.c:1128 +#: src/xz/file_io.c:1246 #, c-format msgid "%s: Write error: %s" msgstr "%s: errore di scrittura: %s" @@ -350,41 +347,41 @@ msgstr "%s: troppo piccolo per essere un file .xz valido" #. 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:671 +#: src/xz/list.c:677 msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" msgstr " Strm Blocc. Compresso Estratto Rapp. Contr Nome file" -#: src/xz/list.c:711 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" msgstr " Stream: %s\n" -#: src/xz/list.c:713 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" msgstr " Blocchi: %s\n" -#: src/xz/list.c:715 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" msgstr " Dim. compresso: %s\n" -#: src/xz/list.c:718 +#: src/xz/list.c:724 #, c-format msgid " Uncompressed size: %s\n" msgstr " Dim. estratto: %s\n" -#: src/xz/list.c:721 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" msgstr " Rapporto: %s\n" -#: src/xz/list.c:723 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" msgstr " Controllo: %s\n" -#: src/xz/list.c:724 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" msgstr " Padding dello stream: %s\n" @@ -392,28 +389,24 @@ 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:752 +#: src/xz/list.c:758 msgid "" " Streams:\n" -" Stream Blocks CompOffset UncompOffset CompSize " -"UncompSize Ratio Check Padding" +" 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" +" 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:807 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" -" Stream Block CompOffset UncompOffset TotalSize " -"UncompSize Ratio Check" +" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" msgstr "" " Blocchi:\n" -" Stream Blocc. Offset comp. Offset estratto Dim. tot. Dim. " -"estratto Rapp. Contr" +" 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 @@ -422,57 +415,57 @@ msgstr "" #. 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:819 +#: 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:897 src/xz/list.c:1072 +#: 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:899 src/xz/list.c:1074 +#: 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:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Sì" -#: src/xz/list.c:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "No" -#: src/xz/list.c:901 src/xz/list.c:1076 +#: src/xz/list.c:907 src/xz/list.c:1082 #, 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:1051 +#: src/xz/list.c:1057 #, 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:1064 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Totali:" -#: src/xz/list.c:1065 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" msgstr " Numero di file: %s\n" -#: src/xz/list.c:1140 +#: src/xz/list.c:1146 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:1146 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" msgstr "--list non è in grado di leggere dallo standard input" @@ -488,94 +481,83 @@ msgstr "%s: fine dell'input durante la lettura dei nomi dei file non attesa" #: src/xz/main.c:120 #, c-format -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\"?" +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 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:231 -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" +#: src/xz/main.c:252 +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" #. TRANSLATORS: This is the program name in the beginning #. 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:713 +#: src/xz/message.c:714 #, c-format msgid "%s: " msgstr "%s: " -#: src/xz/message.c:776 src/xz/message.c:826 +#: src/xz/message.c:777 src/xz/message.c:827 msgid "Internal error (bug)" msgstr "Errore interno (bug)" -#: src/xz/message.c:783 +#: src/xz/message.c:784 msgid "Cannot establish signal handlers" msgstr "Impossibile stabilire i gestori dei segnali" -#: src/xz/message.c:792 +#: src/xz/message.c:793 msgid "No integrity check; not verifying file integrity" -msgstr "" -"Nessun controllo d'integrità; l'integrità del file non viene verificata" +msgstr "Nessun controllo d'integrità; l'integrità del file non viene verificata" -#: src/xz/message.c:795 +#: src/xz/message.c:796 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" +msgstr "Tipo di controllo di integrità non supportato; l'integrità del file non viene verificata" -#: src/xz/message.c:802 +#: src/xz/message.c:803 msgid "Memory usage limit reached" msgstr "Limite di utilizzo della memoria raggiunto" -#: src/xz/message.c:805 +#: src/xz/message.c:806 msgid "File format not recognized" msgstr "Formato di file non riconosciuto" -#: src/xz/message.c:808 +#: src/xz/message.c:809 msgid "Unsupported options" msgstr "Opzioni non supportate" -#: src/xz/message.c:811 +#: src/xz/message.c:812 msgid "Compressed data is corrupt" msgstr "I dati compressi sono danneggiati" -#: src/xz/message.c:814 +#: src/xz/message.c:815 msgid "Unexpected end of input" msgstr "Fine dell'input non attesa" -#: src/xz/message.c:847 +#: src/xz/message.c:848 #, 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:875 +#: src/xz/message.c:876 #, 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:1042 +#: src/xz/message.c:1043 #, c-format msgid "%s: Filter chain: %s\n" msgstr "%s: catena di filtri: %s\n" -#: src/xz/message.c:1052 +#: src/xz/message.c:1053 #, c-format msgid "Try `%s --help' for more information." msgstr "Provare \"%s --help\" per maggiori informazioni." -#: src/xz/message.c:1078 +#: src/xz/message.c:1079 #, c-format msgid "" "Usage: %s [OPTION]... [FILE]...\n" @@ -586,18 +568,15 @@ msgstr "" "Comprime o estrae i FILE nel formato .xz.\n" "\n" -#: src/xz/message.c:1085 -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:1086 +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:1089 +#: src/xz/message.c:1090 msgid " Operation mode:\n" msgstr " Modalità di operazione:\n" -#: src/xz/message.c:1092 +#: src/xz/message.c:1093 msgid "" " -z, --compress force compression\n" " -d, --decompress force decompression\n" @@ -609,7 +588,7 @@ msgstr "" " -t, --test Verifica l'integrità dei file compressi\n" " -l, --list Elenca informazioni sui file .xz" -#: src/xz/message.c:1098 +#: src/xz/message.c:1099 msgid "" "\n" " Operation modifiers:\n" @@ -617,20 +596,18 @@ msgstr "" "\n" " Modificatori di operazioni:\n" -#: src/xz/message.c:1101 +#: src/xz/message.c:1102 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 "" " -k, --keep Mantiene (non elimina) i file di input\n" -" -f, --force Forza la sovrascrittura dell'output e comprime/estrae " -"i\n" +" -f, --force Forza la sovrascrittura dell'output e comprime/estrae i\n" " collegamenti\n" -" -c, --stdout Scrive sullo standard output e non elimina i file di " -"input" +" -c, --stdout Scrive sullo standard output e non elimina i file di input" -#: src/xz/message.c:1107 +#: src/xz/message.c:1108 msgid "" " --single-stream decompress only the first stream, and silently\n" " ignore possible remaining input data" @@ -638,27 +615,24 @@ msgstr "" " --single-stream Decomprime solamente il primo stream e ignora\n" " silenziosamente i restanti dati di input" -#: src/xz/message.c:1110 +#: src/xz/message.c:1111 msgid "" " --no-sparse do not create sparse files when decompressing\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" " --files[=FILE] read filenames to process from FILE; if FILE is\n" " omitted, filenames are read from the standard input;\n" -" filenames must be terminated with the newline " -"character\n" +" filenames must be terminated with the newline character\n" " --files0[=FILE] like --files but use the null character as terminator" msgstr "" " --no-sparse Non crea file sparsi durante l'estrazione\n" " -S, --suffix=.SUF Usa il suffisso \".SUF\" sui file compressi\n" " --files=[FILE] Legge i nomi dei file da elaborare da FILE; se FILE è\n" -" omesso, i nomi dei file sono letti dallo standard " -"input;\n" -" i nomi dei file devono essere terminati con un " -"carattere\n" +" omesso, i nomi dei file sono letti dallo standard input;\n" +" i nomi dei file devono essere terminati con un carattere\n" " di newline\n" " --files0=[FILE] Come --files ma usa il carattere null come terminatore" -#: src/xz/message.c:1119 +#: src/xz/message.c:1120 msgid "" "\n" " Basic file format and compression options:\n" @@ -666,134 +640,109 @@ msgstr "" "\n" " Formato file di base e opzioni di compressione:\n" -#: src/xz/message.c:1121 +#: src/xz/message.c:1122 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'" msgstr "" -" -F, --format=FMT Formato file per codificare o decodificare; i " -"possibili\n" -" valori sono \"auto\" (predefinito) \"xz\", \"lzma\" e " -"\"raw\"\n" -" -C, --check=CHECK Tipo di verifica integrità: \"none\" (usare con " -"attenzione),\n" +" -F, --format=FMT Formato file per codificare o decodificare; i possibili\n" +" valori sono \"auto\" (predefinito) \"xz\", \"lzma\" e \"raw\"\n" +" -C, --check=CHECK Tipo di verifica integrità: \"none\" (usare con attenzione),\n" " \"crc32\", \"crc64\" (predefinito) o \"sha256\"" -#: src/xz/message.c:1126 -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:1127 +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:1130 +#: src/xz/message.c:1131 msgid "" -" -0 ... -9 compression preset; default is 6; take compressor " -"*and*\n" -" decompressor memory usage into account before using " -"7-9!" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" msgstr "" -" -0 ... -9 Preset di compressione; predefinito è 6; tenere a " -"mente\n" -" l'utilizzo di memoria per comprimere ed estrarre " -"prima\n" +" -0 ... -9 Preset di compressione; predefinito è 6; tenere a mente\n" +" l'utilizzo di memoria per comprimere ed estrarre prima\n" " di usare 7-9" -#: src/xz/message.c:1134 +#: src/xz/message.c:1135 msgid "" -" -e, --extreme try to improve compression ratio by using more CPU " -"time;\n" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" msgstr "" " -e, --extreme Tenta di migliorare il rapporto di compressione\n" -" utilizzando più tempo di CPU; non cambia i requisiti " -"di\n" +" utilizzando più tempo di CPU; non cambia i requisiti di\n" " memoria in fase di estrazione" -#: src/xz/message.c:1138 +#: src/xz/message.c:1139 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 "" " -T, --threads=NUM Usa al massimo NUM thread: il valore predefinito è 1,\n" -" impostare a 0 per usare tanti thread quanti core la " -"CPU\n" +" impostare a 0 per usare tanti thread quanti core la CPU\n" " ha a disposizione" -#: src/xz/message.c:1143 +#: src/xz/message.c:1144 msgid "" " --block-size=SIZE\n" -" start a new .xz block after every SIZE bytes of " -"input;\n" +" start a new .xz block after every SIZE bytes of input;\n" " use this to set the block size for threaded compression" msgstr "" " --block-size=DIM\n" -" Avvia un nuovo blocco .xz dopo ogni DIM byte di " -"input:\n" -" usare per impostare la dimensione del blocco durante " -"la\n" +" Avvia un nuovo blocco .xz dopo ogni DIM byte di input:\n" +" usare per impostare la dimensione del blocco durante la\n" " compressione con thread" -#: src/xz/message.c:1147 +#: src/xz/message.c:1148 msgid "" " --block-list=SIZES\n" " start a new .xz block after the given comma-separated\n" " intervals of uncompressed data" msgstr "" " --block-list=DIM\n" -" Avvia un nuovo blocco .xz dopo gli intervalli, " -"sperati\n" +" Avvia un nuovo blocco .xz dopo gli intervalli, sperati\n" " da virgole, di dati non compressi" -#: src/xz/message.c:1151 +#: src/xz/message.c:1152 msgid "" " --flush-timeout=TIMEOUT\n" -" when compressing, if more than TIMEOUT milliseconds " -"has\n" -" passed since the previous flush and reading more " -"input\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" " would block, all pending data is flushed out" msgstr "" " --flush-timeout=TIMEOUT\n" -" Durante la compressione, se sono passati più di " -"TIMEOUT\n" +" Durante la compressione, se sono passati più di TIMEOUT\n" " millisecondi dal flush precedente e la lettura di\n" -" ulteriore input risulterebbe bloccata, viene eseguito " -"il\n" +" ulteriore input risulterebbe bloccata, viene eseguito il\n" " flush di tutti i dati pendenti" -#: src/xz/message.c:1157 +#: src/xz/message.c:1158 #, no-c-format msgid "" " --memlimit-compress=LIMIT\n" " --memlimit-decompress=LIMIT\n" " -M, --memlimit=LIMIT\n" -" set memory usage limit for compression, " -"decompression,\n" +" set memory usage limit for compression, decompression,\n" " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" msgstr "" " --memlimit-compress=LIMIT\n" " --memlimit-decompress=LIMIT\n" " -M, --memlimit=LIMIT\n" " Imposta il limite di utilizzo della memoria per la\n" -" compressione, l'estrazione o entrambe; LIMIT è in " -"byte,\n" +" compressione, l'estrazione o entrambe; LIMIT è in byte,\n" " % della memoria RAM oppure 0 per il valore predefinito" -#: src/xz/message.c:1164 +#: src/xz/message.c:1165 msgid "" -" --no-adjust if compression settings exceed the memory usage " -"limit,\n" -" give an error instead of adjusting the settings " -"downwards" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" msgstr "" -" --no-adjust Se le impostazioni di compressione eccedono il limite " -"di\n" +" --no-adjust Se le impostazioni di compressione eccedono il limite di\n" " utilizzo della memoria, lancia un errore invece di\n" " utilizzare valori più piccoli" -#: src/xz/message.c:1170 +#: src/xz/message.c:1171 msgid "" "\n" " Custom filter chain for compression (alternative for using presets):" @@ -802,13 +751,11 @@ msgstr "" " Catena di filtri personalizzati per la compressione (alternative per\n" " l'utilizzo di preset):" -#: src/xz/message.c:1179 +#: src/xz/message.c:1180 msgid "" "\n" -" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero " -"or\n" -" --lzma2[=OPTS] more of the following options (valid values; " -"default):\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" " preset=PRE reset options to a preset (0-9[e])\n" " dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" " lc=NUM number of literal context bits (0-4; 3)\n" @@ -816,24 +763,17 @@ msgid "" " pb=NUM number of position bits (0-4; 2)\n" " mode=MODE compression mode (fast, normal; normal)\n" " nice=NUM nice length of a match (2-273; 64)\n" -" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; " -"bt4)\n" -" depth=NUM maximum search depth; 0=automatic " -"(default)" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" msgstr "" "\n" -" --lzma1[=OPZ] LZMA1 o LZMA2; OPZ è un elenco separato da virgole di " -"zero\n" -" --lzma2[=OPZ] o più delle seguenti opzioni (valori validi; " -"predefinito):\n" -" preset=NUM Reimposta le opzioni al preset NUM " -"(0-9[e])\n" +" --lzma1[=OPZ] LZMA1 o LZMA2; OPZ è un elenco separato da virgole di zero\n" +" --lzma2[=OPZ] o più delle seguenti opzioni (valori validi; predefinito):\n" +" preset=NUM Reimposta le opzioni al preset NUM (0-9[e])\n" " dict=NUM Dimensione del dizionario\n" " (4KiB - 1536MiB; 8MiB)\n" -" lc=NUM Numero di bit letterali di contesto (0-4; " -"3)\n" -" lp=NUM Numero di bit letterali di posizione " -"(0-4; 0)\n" +" lc=NUM Numero di bit letterali di contesto (0-4; 3)\n" +" lp=NUM Numero di bit letterali di posizione (0-4; 0)\n" " pb=NUM Numero di bit di posizione (0-4; 2)\n" " mode=MODE Modalità di compressione\n" " (fast, normal; normal)\n" @@ -841,11 +781,10 @@ msgstr "" " (2-273; 64)\n" " mf=NAME Strumento per cercare corrispondenze\n" " (hc3, hc4, bt2, bt3, bt4; bt4)\n" -" depth=NUM Profondità massima di ricerca; " -"0=automatica\n" +" depth=NUM Profondità massima di ricerca; 0=automatica\n" " (predefinito)" -#: src/xz/message.c:1194 +#: src/xz/message.c:1195 msgid "" "\n" " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" @@ -868,7 +807,7 @@ msgstr "" " start=NUM Offset iniziale per le conversioni\n" " (predefinito=0)" -#: src/xz/message.c:1206 +#: src/xz/message.c:1207 msgid "" "\n" " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" @@ -880,7 +819,7 @@ msgstr "" " dist=NUM Distanza tra byte sottratti\n" " gli uni dagli altri (1-256; 1)" -#: src/xz/message.c:1214 +#: src/xz/message.c:1215 msgid "" "\n" " Other options:\n" @@ -888,39 +827,33 @@ msgstr "" "\n" " Altre opzioni:\n" -#: src/xz/message.c:1217 +#: src/xz/message.c:1218 msgid "" -" -q, --quiet suppress warnings; specify twice to suppress errors " -"too\n" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" msgstr "" -" -q, --quiet Sopprime gli avvisi; specificare due volte per " -"sopprimere\n" +" -q, --quiet Sopprime gli avvisi; specificare due volte per sopprimere\n" " anche gli errori\n" -" -v, --verbose Output prolisso; specificare due volte per output " -"ancora\n" +" -v, --verbose Output prolisso; specificare due volte per output ancora\n" " più prolisso" -#: src/xz/message.c:1222 +#: src/xz/message.c:1223 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:1224 -msgid "" -" --robot use machine-parsable messages (useful for scripts)" +#: src/xz/message.c:1225 +msgid " --robot use machine-parsable messages (useful for scripts)" msgstr " --robot Usa messaggi analizzabili (utile per gli script)" -#: src/xz/message.c:1227 +#: src/xz/message.c:1228 msgid "" -" --info-memory display the total amount of RAM and the currently " -"active\n" +" --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" msgstr "" -" --info-memory Visualizza la quantità totale di RAM, il limite " -"attuale\n" +" --info-memory Visualizza la quantità totale di RAM, il limite attuale\n" " attivo di utilizzo della memore ed esce" -#: src/xz/message.c:1230 +#: src/xz/message.c:1231 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" @@ -928,7 +861,7 @@ msgstr "" " -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:1234 +#: src/xz/message.c:1235 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" @@ -936,11 +869,11 @@ msgstr "" " -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:1239 +#: src/xz/message.c:1240 msgid " -V, --version display the version number and exit" msgstr " -V, --version Stampa il numero della versione ed esce" -#: src/xz/message.c:1241 +#: src/xz/message.c:1242 msgid "" "\n" "With no FILE, or when FILE is -, read standard input.\n" @@ -952,28 +885,26 @@ msgstr "" #. 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:1247 +#: src/xz/message.c:1248 #, 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 .\n" -#: src/xz/message.c:1249 +#: src/xz/message.c:1250 #, c-format msgid "%s home page: <%s>\n" msgstr "Sito web di %s: <%s>\n" -#: src/xz/message.c:1253 +#: src/xz/message.c:1254 msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." -msgstr "" -"Questa è una versione di sviluppo non adatta per utilizzi in produzione." +msgstr "Questa è una versione di sviluppo non adatta per utilizzi in produzione." #: src/xz/options.c:86 #, c-format msgid "%s: Options must be `name=value' pairs separated with commas" -msgstr "" -"%s: le opzioni devono essere coppie \"nome=valore\" separate da virgole" +msgstr "%s: le opzioni devono essere coppie \"nome=valore\" separate da virgole" #: src/xz/options.c:93 #, c-format @@ -997,17 +928,12 @@ msgstr "La somma di lc e lp non deve superare 4" #: src/xz/options.c:359 #, c-format msgid "The selected match finder requires at least nice=%" -msgstr "" -"Lo strumento per cercare corrispondenze selezionato richiede almeno nice=" -"%" +msgstr "Lo strumento per cercare corrispondenze selezionato richiede almeno nice=%" #: 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" +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 @@ -1036,15 +962,12 @@ msgstr "%s: suffisso del moltiplicatore non valido" #: src/xz/util.c:115 msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." -msgstr "" -"I suffissi validi sono \"KiB\" (2^10), \"MiB\" (2^20), e \"GiB\" (2^30)." +msgstr "I suffissi validi sono \"KiB\" (2^10), \"MiB\" (2^20), e \"GiB\" (2^30)." #: src/xz/util.c:132 #, c-format msgid "Value of the option `%s' must be in the range [%, %]" -msgstr "" -"Il valore dell'opzione \"%s\" deve essere nell'intervallo [%, " -"%]" +msgstr "Il valore dell'opzione \"%s\" deve essere nell'intervallo [%, %]" #: src/xz/util.c:257 msgid "Empty filename, skipping" diff --git a/po/pl.po b/po/pl.po index 3dd222e7..24d36291 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,16 +1,17 @@ # Polish translation for xz. -# This file is in the public domain. -# Jakub Bogusz , 2011-2014. +# This file is put in the public domain. +# Jakub Bogusz , 2011-2019. # msgid "" msgstr "" -"Project-Id-Version: xz 5.1.4\n" +"Project-Id-Version: xz 5.2.4\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2014-09-14 21:56+0300\n" -"PO-Revision-Date: 2014-10-15 20:53+0200\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-03-05 05:30+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -49,6 +50,14 @@ msgstr "Wraz z opcją `--files' lub `--files0' można podać tylko jeden plik." msgid "The environment variable %s contains too many arguments" msgstr "Zmienna środowiskowa %s zawiera zbyt dużo argumentów" +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "Obsługa kompresji została wyłączona na etapie budowania" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "Obsługa dekompresji została wyłączona na etapie budowania" + #: src/xz/coder.c:110 msgid "Maximum number of filters is four" msgstr "Maksymalna liczba filtrów to cztery" @@ -81,36 +90,48 @@ msgstr "Łańcuch filtrów jest niezgodny z --flush-timeout" 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:234 +#: src/xz/coder.c:235 #, c-format msgid "Using up to % threads." msgstr "Maksymalna liczba używanych wątków: %." -#: src/xz/coder.c:247 +#: src/xz/coder.c:251 msgid "Unsupported filter chain or filter options" msgstr "Nieobsługiwany łańcuch filtrów lub opcje filtra" -#: src/xz/coder.c:255 +#: src/xz/coder.c:263 #, c-format msgid "Decompression will need %s MiB of memory." msgstr "Dekompresja będzie wymagała %s MiB pamięci." -#: src/xz/coder.c:290 +#: src/xz/coder.c:300 #, 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" -#: src/xz/coder.c:344 +#: src/xz/coder.c:354 #, 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" -#: src/xz/file_io.c:90 +#: src/xz/file_io.c:110 src/xz/file_io.c:118 #, c-format msgid "Error creating a pipe: %s" msgstr "Błąd tworzenia potoku: %s" -#: src/xz/file_io.c:166 +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "Piaskownica jest wyłączona ze względu na niezgodne opcje linii poleceń" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "Piaskownica została włączona" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Nie udało się włączyć piaskownicy" + +#: src/xz/file_io.c:262 #, c-format msgid "%s: poll() failed: %s" msgstr "%s: poll() nie powiodło się: %s" @@ -125,117 +146,107 @@ msgstr "%s: poll() nie powiodło się: %s" #. 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:236 +#: src/xz/file_io.c:332 #, 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:243 src/xz/file_io.c:761 +#: src/xz/file_io.c:339 src/xz/file_io.c:878 #, c-format msgid "%s: Cannot remove: %s" msgstr "%s: Nie można usunąć: %s" -#: src/xz/file_io.c:268 +#: src/xz/file_io.c:364 #, 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:274 +#: src/xz/file_io.c:370 #, c-format msgid "%s: Cannot set the file group: %s" msgstr "%s: Nie można ustawić grupy pliku: %s" -#: src/xz/file_io.c:293 +#: src/xz/file_io.c:389 #, c-format msgid "%s: Cannot set the file permissions: %s" msgstr "%s: Nie można ustawić uprawnień pliku: %s" -#: src/xz/file_io.c:399 +#: src/xz/file_io.c:515 #, 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:408 -#, c-format -msgid "Error setting O_NONBLOCK on standard input: %s" -msgstr "Błąd podczas ustawiania O_NONBLOCK dla standardowego wejścia: %s" - -#: src/xz/file_io.c:460 src/xz/file_io.c:522 +#: src/xz/file_io.c:572 src/xz/file_io.c:634 #, c-format msgid "%s: Is a symbolic link, skipping" msgstr "%s: Jest dowiązaniem symbolicznym, pominięto" -#: src/xz/file_io.c:551 +#: src/xz/file_io.c:663 #, c-format msgid "%s: Is a directory, skipping" msgstr "%s: Jest katalogiem, pominięto" -#: src/xz/file_io.c:557 +#: src/xz/file_io.c:669 #, c-format msgid "%s: Not a regular file, skipping" msgstr "%s: Nie jest zwykłym plikiem, pominięto" -#: src/xz/file_io.c:574 +#: src/xz/file_io.c:686 #, 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:581 +#: src/xz/file_io.c:693 #, c-format msgid "%s: File has sticky bit set, skipping" msgstr "%s: Plik ma ustawiony bit sticky, pominięto" -#: src/xz/file_io.c:588 +#: src/xz/file_io.c:700 #, 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:668 +#: src/xz/file_io.c:788 #, 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:714 +#: src/xz/file_io.c:836 #, 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:723 -#, c-format -msgid "Error setting O_NONBLOCK on standard output: %s" -msgstr "Błąd podczas ustawiania O_NONBLOCK dla standardowego wyjścia: %s" - -#: src/xz/file_io.c:896 +#: src/xz/file_io.c:1014 #, 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:908 +#: src/xz/file_io.c:1026 #, c-format msgid "%s: Closing the file failed: %s" msgstr "%s: Zamknięcie pliku nie powiodło się: %s" -#: src/xz/file_io.c:944 src/xz/file_io.c:1170 +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 #, 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:1039 +#: src/xz/file_io.c:1157 #, c-format msgid "%s: Read error: %s" msgstr "%s: Błąd odczytu: %s" -#: src/xz/file_io.c:1059 +#: src/xz/file_io.c:1177 #, c-format msgid "%s: Error seeking the file: %s" msgstr "%s: Błąd podczas zmiany pozycji w pliku: %s" -#: src/xz/file_io.c:1069 +#: src/xz/file_io.c:1187 #, c-format msgid "%s: Unexpected end of file" msgstr "%s: Nieoczekiwany koniec pliku" -#: src/xz/file_io.c:1128 +#: src/xz/file_io.c:1246 #, c-format msgid "%s: Write error: %s" msgstr "%s: Błąd zapisu: %s" @@ -332,41 +343,41 @@ msgstr "%s: Za mały na poprawny plik .xz" #. 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:671 +#: src/xz/list.c:677 msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" msgstr "Strum. Bloki Spakowany Rozpakowany Wsp. Kontrola Nazwa pliku" -#: src/xz/list.c:711 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" msgstr " Strumienie: %s\n" -#: src/xz/list.c:713 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" msgstr " Bloki: %s\n" -#: src/xz/list.c:715 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" msgstr " Rozmiar spakowany: %s\n" -#: src/xz/list.c:718 +#: src/xz/list.c:724 #, c-format msgid " Uncompressed size: %s\n" msgstr " Rozmiar rozpakowany: %s\n" -#: src/xz/list.c:721 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" msgstr " Współczynnik: %s\n" -#: src/xz/list.c:723 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" msgstr " Kontrola spójności: %s\n" -#: src/xz/list.c:724 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" msgstr " Wyrównanie strumienia: %s\n" @@ -374,7 +385,7 @@ 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:752 +#: src/xz/list.c:758 msgid "" " Streams:\n" " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" @@ -384,7 +395,7 @@ msgstr "" #. TRANSLATORS: The second line is column headings. All #. except Check are right aligned; Check is left aligned. -#: src/xz/list.c:807 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" @@ -400,37 +411,37 @@ msgstr "" #. 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:819 +#: 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:897 src/xz/list.c:1072 +#: 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:899 src/xz/list.c:1074 +#: 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:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Tak" -#: src/xz/list.c:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "Nie" -#: src/xz/list.c:901 src/xz/list.c:1076 +#: src/xz/list.c:907 src/xz/list.c:1082 #, 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:1051 +#: src/xz/list.c:1057 #, c-format msgid "%s file\n" msgid_plural "%s files\n" @@ -438,20 +449,20 @@ msgstr[0] "%s plik\n" msgstr[1] "%s pliki\n" msgstr[2] "%s plików\n" -#: src/xz/list.c:1064 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Sumarycznie:" -#: src/xz/list.c:1065 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" msgstr " Liczba plików: %s\n" -#: src/xz/list.c:1140 +#: src/xz/list.c:1146 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:1146 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" msgstr "--list nie obsługuje odczytu ze standardowego wejścia" @@ -474,7 +485,7 @@ msgstr "%s: Napotkano znak NUL podczas odczytu nazw plików; może miało być ` 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:231 +#: src/xz/main.c:252 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" @@ -482,68 +493,68 @@ msgstr "Nie można odczytać danych ze standardowego wejścia przy czytaniu nazw #. 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:713 +#: src/xz/message.c:714 #, c-format msgid "%s: " msgstr "%s: " -#: src/xz/message.c:776 src/xz/message.c:826 +#: src/xz/message.c:777 src/xz/message.c:827 msgid "Internal error (bug)" msgstr "Błąd wewnętrzny" -#: src/xz/message.c:783 +#: src/xz/message.c:784 msgid "Cannot establish signal handlers" msgstr "Nie można ustawić obsługi sygnałów" -#: src/xz/message.c:792 +#: src/xz/message.c:793 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:795 +#: src/xz/message.c:796 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:802 +#: src/xz/message.c:803 msgid "Memory usage limit reached" msgstr "Osiągnięto limit użycia pamięci" -#: src/xz/message.c:805 +#: src/xz/message.c:806 msgid "File format not recognized" msgstr "Nie rozpoznany format pliku" -#: src/xz/message.c:808 +#: src/xz/message.c:809 msgid "Unsupported options" msgstr "Nieobsługiwane opcje" -#: src/xz/message.c:811 +#: src/xz/message.c:812 msgid "Compressed data is corrupt" msgstr "Dane skompresowane są uszkodzone" -#: src/xz/message.c:814 +#: src/xz/message.c:815 msgid "Unexpected end of input" msgstr "Nieoczekiwany koniec wejścia" -#: src/xz/message.c:847 +#: src/xz/message.c:848 #, 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:875 +#: src/xz/message.c:876 #, 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:1042 +#: src/xz/message.c:1043 #, c-format msgid "%s: Filter chain: %s\n" msgstr "%s: Łańcuch filtrów: %s\n" -#: src/xz/message.c:1052 +#: src/xz/message.c:1053 #, c-format msgid "Try `%s --help' for more information." msgstr "Polecenie `%s --help' pokaże więcej informacji." -#: src/xz/message.c:1078 +#: src/xz/message.c:1079 #, c-format msgid "" "Usage: %s [OPTION]... [FILE]...\n" @@ -554,17 +565,17 @@ msgstr "" "Kompresja lub dekompresja PLIKÓW w formacie .xz.\n" "\n" -#: src/xz/message.c:1085 +#: src/xz/message.c:1086 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:1089 +#: src/xz/message.c:1090 msgid " Operation mode:\n" msgstr " Tryb pracy:\n" -#: src/xz/message.c:1092 +#: src/xz/message.c:1093 msgid "" " -z, --compress force compression\n" " -d, --decompress force decompression\n" @@ -576,7 +587,7 @@ msgstr "" " -t, --test sprawdzenie spójności plików skompresowanych\n" " -l, --list wypisanie informacji o plikach .xz" -#: src/xz/message.c:1098 +#: src/xz/message.c:1099 msgid "" "\n" " Operation modifiers:\n" @@ -584,7 +595,7 @@ msgstr "" "\n" " Modyfikatory operacji:\n" -#: src/xz/message.c:1101 +#: src/xz/message.c:1102 msgid "" " -k, --keep keep (don't delete) input files\n" " -f, --force force overwrite of output file and (de)compress links\n" @@ -594,7 +605,7 @@ msgstr "" " -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:1107 +#: src/xz/message.c:1108 msgid "" " --single-stream decompress only the first stream, and silently\n" " ignore possible remaining input data" @@ -602,7 +613,7 @@ msgstr "" " --single-stream dekompresja tylko pierwszego strumienia, ciche\n" " zignorowanie pozostałych danych wejściowych" -#: src/xz/message.c:1110 +#: src/xz/message.c:1111 msgid "" " --no-sparse do not create sparse files when decompressing\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" @@ -618,7 +629,7 @@ msgstr "" " 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:1119 +#: src/xz/message.c:1120 msgid "" "\n" " Basic file format and compression options:\n" @@ -626,7 +637,7 @@ msgstr "" "\n" " Podstawowe opcje formatu pliku i kompresji:\n" -#: src/xz/message.c:1121 +#: src/xz/message.c:1122 msgid "" " -F, --format=FMT file format to encode or decode; possible values are\n" " `auto' (default), `xz', `lzma', and `raw'\n" @@ -638,11 +649,11 @@ msgstr "" " -C, --check=TEST typ kontroli spójności: `none' (ostrożnie!),\n" " `crc32', `crc64' (domyślny) lub `sha256'" -#: src/xz/message.c:1126 +#: src/xz/message.c:1127 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:1130 +#: src/xz/message.c:1131 msgid "" " -0 ... -9 compression preset; default is 6; take compressor *and*\n" " decompressor memory usage into account before using 7-9!" @@ -651,7 +662,7 @@ msgstr "" " użyciem wartości 7-9 należy wziąć pod uwagę wykorzystanie\n" " pamięci przy kompresji *oraz* dekompresji!" -#: src/xz/message.c:1134 +#: src/xz/message.c:1135 msgid "" " -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" @@ -660,7 +671,7 @@ msgstr "" " ilości czasu procesora; nie wpływa na wymagania\n" " pamięciowe dekompresora" -#: src/xz/message.c:1138 +#: src/xz/message.c:1139 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" @@ -668,7 +679,7 @@ msgstr "" " -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:1143 +#: src/xz/message.c:1144 msgid "" " --block-size=SIZE\n" " start a new .xz block after every SIZE bytes of input;\n" @@ -679,7 +690,7 @@ msgstr "" " opcja służy do ustawienia rozmiaru bloku dla kompresji\n" " wielowątkowej" -#: src/xz/message.c:1147 +#: src/xz/message.c:1148 msgid "" " --block-list=SIZES\n" " start a new .xz block after the given comma-separated\n" @@ -689,7 +700,7 @@ msgstr "" " rozpoczęcie nowego bloku .xz po rozdzielonych przecinkiem\n" " przedziałach danych nieskompresowanych" -#: src/xz/message.c:1151 +#: src/xz/message.c:1152 msgid "" " --flush-timeout=TIMEOUT\n" " when compressing, if more than TIMEOUT milliseconds has\n" @@ -701,7 +712,7 @@ msgstr "" " ostatniegu zapisu bloku, a odczyt kolejnych danych byłby\n" " blokujący, wszystkie gotowe dane są zapisywane" -#: src/xz/message.c:1157 +#: src/xz/message.c:1158 #, no-c-format msgid "" " --memlimit-compress=LIMIT\n" @@ -717,7 +728,7 @@ msgstr "" " dekompresji lub obu; LIMIT jest w bajtach, % RAM lub 0\n" " dla limitów domyślnych" -#: src/xz/message.c:1164 +#: src/xz/message.c:1165 msgid "" " --no-adjust if compression settings exceed the memory usage limit,\n" " give an error instead of adjusting the settings downwards" @@ -726,7 +737,7 @@ msgstr "" " pamięci, zostanie zgłoszony błąd zamiast zmniejszania\n" " ustawień" -#: src/xz/message.c:1170 +#: src/xz/message.c:1171 msgid "" "\n" " Custom filter chain for compression (alternative for using presets):" @@ -734,7 +745,7 @@ msgstr "" "\n" " Łańcuch własnych filtrów do kompresji (alternatywa do używania -0 .. -9):" -#: src/xz/message.c:1179 +#: src/xz/message.c:1180 msgid "" "\n" " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" @@ -763,7 +774,7 @@ msgstr "" " mf=NAZWA dopasowywacz (hc3, hc4, bt2, bt3, bt4; bt4)\n" " depth=ILE maks. głębokość szukania; 0=auto (domyślne)" -#: src/xz/message.c:1194 +#: src/xz/message.c:1195 msgid "" "\n" " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" @@ -785,7 +796,7 @@ msgstr "" " Poprawne OPCJE dla wszystkich filtrów BCJ:\n" " start=ILE offset początku konwersji (domyślnie=0)" -#: src/xz/message.c:1206 +#: src/xz/message.c:1207 msgid "" "\n" " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" @@ -797,7 +808,7 @@ msgstr "" " dist=ILE odległość między bajtami odejmowanymi od\n" " siebie (1-256; 1)" -#: src/xz/message.c:1214 +#: src/xz/message.c:1215 msgid "" "\n" " Other options:\n" @@ -805,7 +816,7 @@ msgstr "" "\n" " Inne opcje:\n" -#: src/xz/message.c:1217 +#: src/xz/message.c:1218 msgid "" " -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" @@ -813,15 +824,15 @@ msgstr "" " -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:1222 +#: src/xz/message.c:1223 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:1224 +#: src/xz/message.c:1225 msgid " --robot use machine-parsable messages (useful for scripts)" msgstr " --robot komunikaty w formacie dla maszyny (do skryptów)" -#: src/xz/message.c:1227 +#: src/xz/message.c:1228 msgid "" " --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" @@ -829,7 +840,7 @@ msgstr "" " --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:1230 +#: src/xz/message.c:1231 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" @@ -837,7 +848,7 @@ msgstr "" " -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:1234 +#: src/xz/message.c:1235 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" @@ -845,11 +856,11 @@ msgstr "" " -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:1239 +#: src/xz/message.c:1240 msgid " -V, --version display the version number and exit" msgstr " -V, --version wyświetlenie informacji o wersji i zakończenie" -#: src/xz/message.c:1241 +#: src/xz/message.c:1242 msgid "" "\n" "With no FILE, or when FILE is -, read standard input.\n" @@ -861,7 +872,7 @@ msgstr "" #. 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:1247 +#: src/xz/message.c:1248 #, c-format msgid "Report bugs to <%s> (in English or Finnish).\n" msgstr "" @@ -870,12 +881,12 @@ msgstr "" "Błędy w tłumaczeniu prosimy zgłaszać na adres\n" ".\n" -#: src/xz/message.c:1249 +#: src/xz/message.c:1250 #, c-format msgid "%s home page: <%s>\n" msgstr "Strona domowa %s: <%s>\n" -#: src/xz/message.c:1253 +#: src/xz/message.c:1254 msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." msgstr "TA WERSJA JEST ROZWOJOWA, NIE PRZEZNACZONA DO UŻYTKU PRODUKCYJNEGO." diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..0d1a8ccd --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1001 @@ +# 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 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-03-05 20:30-0200\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"X-Bugs: Report translation errors to the Language-Team address.\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-Generator: Virtaal 1.0.0-beta1\n" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s: Argumento inválido para --block-list" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "%s: Argumentos demais para --block-list" + +#: src/xz/args.c:102 +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 +#, 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 +#, c-format +msgid "%s: Unsupported integrity check type" +msgstr "%s: Tipo de verificação de integridade sem suporte" + +#: src/xz/args.c:473 +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 +#, 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 +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 +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 +msgid "Maximum number of filters is four" +msgstr "O número máximo de filtros é quatro" + +#: src/xz/coder.c:129 +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 +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 +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 +msgid "The .lzma format supports only the LZMA1 filter" +msgstr "O formato .lzma possui suporte apenas ao filtro LZMA1" + +#: src/xz/coder.c:192 +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 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "A cadeia de filtros é incompatível com --flush-timeout" + +#: src/xz/coder.c:215 +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 +#, c-format +msgid "Using up to % threads." +msgstr "Usando até % threads." + +#: src/xz/coder.c:251 +msgid "Unsupported filter chain or filter options" +msgstr "Opções de filtro ou cadeia de filtros sem suporte" + +#: src/xz/coder.c:263 +#, 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 +#, 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" + +#: src/xz/coder.c:354 +#, 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" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "Erro ao criar um pipe: %s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "Sandbox está desabilitado em razão de argumentos de linha de comando incompatíveis" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "Sandbox foi habilitado com sucesso" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Falha ao habilitar o sandbox" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s: poll() falhou: %s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, 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:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s: Não foi possível remover: %s" + +#: src/xz/file_io.c:364 +#, 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:370 +#, 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:389 +#, 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:515 +#, 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:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s: É um link simbólico, ignorando" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s: É um diretório, ignorando" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s: Não é um arquivo comum, ignorando" + +#: src/xz/file_io.c:686 +#, 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:693 +#, 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:700 +#, 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" + +#: src/xz/file_io.c:788 +#, 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:836 +#, 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:1014 +#, 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:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s: Fechamento do arquivo falhou: %s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, 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:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s: Erro de leitura: %s" + +#: src/xz/file_io.c:1177 +#, c-format +msgid "%s: Error seeking the file: %s" +msgstr "%s: Erro ao buscar o arquivo: %s" + +#: src/xz/file_io.c:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s: Fim de arquivo inesperado" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s: Erro de escrita: %s" + +#: src/xz/hardware.c:107 +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:126 +msgid "Total 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:128 +msgid "Memory usage limit for compression: " +msgstr "Limite de uso de memória para compressão: " + +# Espaços reduzidos para manter alinhamento com mensagens adjacentes -- Rafael +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +msgstr "Limite de uso de memória para descompressão: " + +#. 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" +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +msgid "Unknown-15" +msgstr "Incógnito15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s: O arquivo está vazio" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s: Pequeno demais para ser um arquivo .xz válido" + +#. 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" +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 +msgid "Yes" +msgstr "Sim" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "Não" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, 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 +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 +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 +msgid "--list does not support reading from standard input" +msgstr "--list não possui suporte a leitura da entrada padrão" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s: Erro ao ler nomes de arquivo: %s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s: Fim da entrada inesperado ao ler nomes de arquivos" + +#: src/xz/main.c:120 +#, c-format +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 +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 +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" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "Erro interno (bug)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "Não foi possível estabelecer manipuladores de sinais" + +#: src/xz/message.c:793 +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:796 +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:803 +msgid "Memory usage limit reached" +msgstr "Limite de uso de memória alcançado" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "Formato de arquivo não reconhecido" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "Opções sem suporte" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "Os dados comprimidos estão corrompidos" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "Fim da entrada inesperado" + +#: src/xz/message.c:848 +#, 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:876 +#, 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:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s: Cadeia de filtros: %s\n" + +#: src/xz/message.c:1053 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Tente \"%s --help\" para mais informações." + +#: src/xz/message.c:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" +"Uso: %s [OPÇÕES]... [ARQUIVO]...\n" +"Comprime e descomprime ARQUIVOs no formato .xz.\n" +"\n" + +#: src/xz/message.c:1086 +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:1090 +msgid " Operation mode:\n" +msgstr " Modo de operação:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" +" -z, --compress força a compressão\n" +" -d, --decompress força a descompressão\n" +" -t, --test testa a integridade do arquivo comprimido\n" +" -l, --list lista informações sobre arquivos .xz" + +#: src/xz/message.c:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +" Modificadores de opções:\n" + +#: src/xz/message.c:1102 +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 "" +" -k, --keep mantém (não exclui) os arquivos de entrada\n" +" -f, --force força a sobrescrita do arquivo de entrada e a \n" +" (des)compressão de links\n" +" -c, --stdout escreve a entrada padrão e não exclui os arquivos\n" +" de entrada" + +#: src/xz/message.c:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" +" --single-stream descomprime apenas o primeiro fluxo, e ignora de forma\n" +" silenciosa possíveis dados de entrada restantes" + +#: src/xz/message.c:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +msgstr "" +" --no-sparse não cria arquivos esparsos ao descomprimir\n" +" -S, --suffix=.SUF usa o sufixo \".SUF\" em arquivos comprimidos\n" +" --files[=ARQUIVO]\n" +" lê nomes de arquivos para processar de ARQUIVO;\n" +" se ARQUIVO for omitido, nomes de arquivos são\n" +" lidos da entrada padrão; nomes de arquivos devem\n" +" ser terminados com o caractere de nova linha\n" +" --files0[=ARQUIVO]\n" +" similar a --files, mas usa o caractere nulo como\n" +" terminador" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" +"\n" +" Opções básicas de formato de arquivo e compressão:\n" + +#: src/xz/message.c:1122 +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'" +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" +" -C, --check=VERIF tipo de verificação de integridade: \"none\" (cuidado!),\n" +" \"crc32\", \"crc64\" (padrão) ou \"sha256\"" + +#: src/xz/message.c:1127 +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:1131 +msgid "" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" +msgstr "" +" -0 ... -9 predefinição de compressão; padrão é 6; leve o uso de\n" +" memória do compressor *e* descompressor em conta\n" +" antes de usar 7-9!" + +#: src/xz/message.c:1135 +msgid "" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" +" does not affect decompressor memory requirements" +msgstr "" +" -e, --extreme tenta melhorar a proporção de compressão usando mais\n" +" tempo de CPU; não afeta os requisitos de memória do\n" +" descompressor" + +#: src/xz/message.c:1139 +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 "" +" -T, --threads=NÚM usa no máximo NÚM threads; o padrão é 1; defina para\n" +" 0 para usar o máximo de threads que há de núcleos de\n" +" processador" + +#: src/xz/message.c:1144 +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 "" +" --block-size=TAM\n" +" inicia novo bloco .xz após cada TAM bytes de entrada;\n" +" use isso para definido o tamanho de bloco para\n" +" compressão com threads" + +#: src/xz/message.c:1148 +msgid "" +" --block-list=SIZES\n" +" start a new .xz block after the given comma-separated\n" +" intervals of uncompressed data" +msgstr "" +" --block-list=TAM\n" +" inicia um novo bloco .xz após os intervalos dados,\n" +" separados por vírgula, de dados descomprimidos" + +#: src/xz/message.c:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" +" --flush-timeout=TEMPO-LIMITE\n" +" ao comprimir, se mais de TEMPO-LIMITE milissegundos\n" +" tiverem passado desde a liberação anterior e a leitura\n" +" de mais entrada bloquearia, todos os dados pendentes\n" +" serão liberados" + +#: src/xz/message.c:1158 +#, 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" +msgstr "" +" --memlimit-compress=LIMITE\n" +" --memlimit-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" + +#: src/xz/message.c:1165 +msgid "" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" +msgstr "" +" --no-adjust se configurações de compressão exceder o limite\n" +" de uso de memória, fornece um erro em vez de\n" +" ajustar as configurações para baixo" + +#: src/xz/message.c:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" +"\n" +" Cadeia de filtros personalizada para compressão (alternativa à predefinição):" + +#: src/xz/message.c:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" +"\n" +"--lzma1[=OPÇÕES] LZMA1/LZMA2; OPÇÕES é uma lista separada por vírgula de\n" +"--lzma2[=OPÇÕES] zero ou + das opções abaixo (valores válidos, padrão):\n" +" preset=PRE redefine opções para predefinição (0-9[e])\n" +" dict=NÚM tam. de dicionário (4KiB - 1536MiB; 8MiB)\n" +" lc=NÚM núm. de bits de contexto literal (0-4; 3)\n" +" lp=NÚM núm. de bits de posição literal (0-4; 0)\n" +" pb=NÚM núm. de bits de posição (0-4; 2)\n" +" mode=MODO modo de compressão (fast, normal; normal)\n" +" nice=NÚM tam. de nice de correspondência (2-273; 64)\n" +" mf=NOME localizador de correspondência\n" +" (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM máximo de profundidade de pesquisa;\n" +" 0=automatic (padrão)" + +#: src/xz/message.c:1195 +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)" +msgstr "" +"\n" +" --x86[=OPÇÕES] filtro BCJ x86 (32 bits e 64 bits)\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)" + +#: src/xz/message.c:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" +"\n" +" --delta[=OPÇÕES] filtro delta; OPÇÕES válidas (valores válidos, padrão):\n" +" dist=NÚM distância entre bytes sendo subtraído\n" +" de cada um (1-256; 1)" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +" Outras opções:\n" + +#: src/xz/message.c:1218 +msgid "" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" +" -v, --verbose be verbose; specify twice for even more verbose" +msgstr "" +" -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:1223 +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:1225 +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:1228 +msgid "" +" --info-memory display the total amount of RAM and the currently active\n" +" memory usage limits, and exit" +msgstr "" +" --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:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -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:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -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:1240 +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:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"Sem ARQUIVO, ou quando ARQUIVO é -, lê da entrada padrão.\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, 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 .\n" + +#: src/xz/message.c:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Site do %s: <%s>\n" + +#: src/xz/message.c:1254 +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." + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s: As opções devem ser pares \"nome=valor\" separados por vírgulas" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s: Nome de opção inválido" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s: Valor de opção inválido" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "Predefinição LZMA1/LZMA2 sem suporte: %s" + +#: src/xz/options.c:355 +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 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "O localizador de correspondência selecionado requer pelo menos nice=%" + +#: 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 +#, 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 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s: Sufixo de nome de arquivo inválido" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s: O valor não é um inteiro integral decimal" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s: Sufixo multiplicador inválido" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "Sufixos válidos são \"KiB\" (2^10), \"MiB\" (2^20) e \"GiB\" (2^30)." + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "O valor da opção \"%s\" deve estar no intervalo [%, %]" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "Nome de arquivo vazio, ignorando" + +#: src/xz/util.c:271 +msgid "Compressed data cannot be read from a terminal" +msgstr "Dados comprimidos não podem ser lidos de um terminal" + +#: src/xz/util.c:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "Dados comprimidos não podem ser escrito para um terminal" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "A escrita para a saída padrão falhou" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "Erro desconhecido" -- cgit v1.2.3 From b6ed09729ae408be4533a0ddbc7df3d6f566846a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 14:33:30 +0200 Subject: Translations: Update vi.po to match the file from the TP. The translated strings haven't been updated but word wrapping is different. --- po/vi.po | 407 ++++++++++++++++++++++++++++----------------------------------- 1 file changed, 179 insertions(+), 228 deletions(-) diff --git a/po/vi.po b/po/vi.po index a5e7382d..7c5db7e6 100644 --- a/po/vi.po +++ b/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: xz 5.1.4beta\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2014-09-25 08:57+0700\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" "PO-Revision-Date: 2014-09-25 09:06+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -51,6 +51,14 @@ msgstr "Chỉ được đưa ra một tập tin cho “--files” hay “--files 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 +msgid "Compression support was disabled at build time" +msgstr "" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "" + #: src/xz/coder.c:110 msgid "Maximum number of filters is four" msgstr "Số lượng bộ lọc tối đa là bốn" @@ -65,9 +73,7 @@ msgstr "Dùng hiện tại trong chế độ thô là ngớ ngẩn." #: src/xz/coder.c:161 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." +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 msgid "The .lzma format supports only the LZMA1 filter" @@ -85,44 +91,48 @@ msgstr "Móc xích lọc là không tương thích với --flush-timeout" 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:234 +#: src/xz/coder.c:235 #, c-format msgid "Using up to % threads." msgstr "Dùng đến % tuyến trình." -#: src/xz/coder.c:247 +#: src/xz/coder.c:251 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:255 +#: src/xz/coder.c:263 #, 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:290 +#: src/xz/coder.c:300 #, c-format -msgid "" -"Adjusted 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" +msgid "Adjusted 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:344 +#: src/xz/coder.c:354 #, 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" +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" -#: src/xz/file_io.c:90 +#: src/xz/file_io.c:110 src/xz/file_io.c:118 #, c-format 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:166 +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "" + +#: src/xz/file_io.c:262 #, c-format msgid "%s: poll() failed: %s" msgstr "%s: hàm poll() bị lỗi: %s" @@ -137,118 +147,107 @@ msgstr "%s: hàm poll() bị lỗi: %s" #. 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:236 +#: src/xz/file_io.c:332 #, 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:243 src/xz/file_io.c:761 +#: src/xz/file_io.c:339 src/xz/file_io.c:878 #, c-format msgid "%s: Cannot remove: %s" msgstr "%s: Không thể gỡ bỏ: %s" -#: src/xz/file_io.c:268 +#: src/xz/file_io.c:364 #, 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:274 +#: src/xz/file_io.c:370 #, 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:293 +#: src/xz/file_io.c:389 #, 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:399 +#: src/xz/file_io.c:515 #, 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:408 -#, c-format -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" - -#: src/xz/file_io.c:460 src/xz/file_io.c:522 +#: src/xz/file_io.c:572 src/xz/file_io.c:634 #, 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:551 +#: src/xz/file_io.c:663 #, 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:557 +#: src/xz/file_io.c:669 #, 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:574 +#: src/xz/file_io.c:686 #, 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:581 +#: src/xz/file_io.c:693 #, 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:588 +#: src/xz/file_io.c:700 #, 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:668 +#: src/xz/file_io.c:788 #, 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:714 +#: src/xz/file_io.c:836 #, 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:723 -#, c-format -msgid "Error setting O_NONBLOCK on standard output: %s" -msgstr "Lỗi cài đặt O_NONBLOCK trên đầu ra tiêu chuẩn: %s" - -#: src/xz/file_io.c:896 +#: src/xz/file_io.c:1014 #, 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:908 +#: src/xz/file_io.c:1026 #, 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:944 src/xz/file_io.c:1170 +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 #, 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" +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:1039 +#: src/xz/file_io.c:1157 #, c-format msgid "%s: Read error: %s" msgstr "%s: Lỗi đọc: %s" -#: src/xz/file_io.c:1059 +#: src/xz/file_io.c:1177 #, 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:1069 +#: src/xz/file_io.c:1187 #, 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:1128 +#: src/xz/file_io.c:1246 #, c-format msgid "%s: Write error: %s" msgstr "%s: Lỗi ghi: %s" @@ -345,41 +344,41 @@ msgstr "%s: Là quá nhỏ đối với tập tin .xz hợp lệ" #. 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:671 +#: src/xz/list.c:677 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:711 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" msgstr " Luồng dữ liệu: %s\n" -#: src/xz/list.c:713 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" msgstr " Khối: %s\n" -#: src/xz/list.c:715 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" msgstr " Cỡ khi bị nén: %s\n" -#: src/xz/list.c:718 +#: 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:721 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" msgstr " Tỷ lệ nén: %s\n" -#: src/xz/list.c:723 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" msgstr " Kiểm tra: %s\n" -#: src/xz/list.c:724 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" msgstr " Đệm luồng dữ liệu: %s\n" @@ -387,28 +386,24 @@ 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:752 +#: src/xz/list.c:758 msgid "" " Streams:\n" -" Stream Blocks CompOffset UncompOffset CompSize " -"UncompSize Ratio Check Padding" +" 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" +" 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:807 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" -" Stream Block CompOffset UncompOffset TotalSize " -"UncompSize Ratio Check" +" 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" +" 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 @@ -417,57 +412,56 @@ msgstr "" #. 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:819 +#: 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:897 src/xz/list.c:1072 +#: 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:899 src/xz/list.c:1074 +#: 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:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Có" -#: src/xz/list.c:900 src/xz/list.c:1075 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "Không" -#: src/xz/list.c:901 src/xz/list.c:1076 +#: src/xz/list.c:907 src/xz/list.c:1082 #, 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:1051 +#: src/xz/list.c:1057 #, c-format msgid "%s file\n" msgid_plural "%s files\n" msgstr[0] "%s tập tin\n" -#: src/xz/list.c:1064 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Tổng cộng:" -#: src/xz/list.c:1065 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" msgstr " Số tập tin: %s\n" -#: src/xz/list.c:1140 +#: src/xz/list.c:1146 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)" +msgstr "--list chỉ hoạt động trên các tập tin .xz (--format=xz hay --format=auto)" -#: src/xz/list.c:1146 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" msgstr "--list không hỗ trợ đọc từ đầu vào tiêu chuẩn" @@ -483,94 +477,83 @@ msgstr "%s: Gặp kết thúc đầu vào bất ngờ khi đọc các tên tập #: src/xz/main.c:120 #, c-format -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'?" +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 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:231 -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" +#: src/xz/main.c:252 +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" #. TRANSLATORS: This is the program name in the beginning #. 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:713 +#: src/xz/message.c:714 #, c-format msgid "%s: " msgstr "%s: " -#: src/xz/message.c:776 src/xz/message.c:826 +#: src/xz/message.c:777 src/xz/message.c:827 msgid "Internal error (bug)" msgstr "Lỗi nội bộ (lỗi)" -#: src/xz/message.c:783 +#: src/xz/message.c:784 msgid "Cannot establish signal handlers" msgstr "Không thể thiết lập bộ xử lý tín hiệu" -#: src/xz/message.c:792 +#: src/xz/message.c:793 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" +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:795 +#: src/xz/message.c:796 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" +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:802 +#: src/xz/message.c:803 msgid "Memory usage limit reached" msgstr "Đã chạm mốc giới hạn sử dụng bộ nhớ" -#: src/xz/message.c:805 +#: src/xz/message.c:806 msgid "File format not recognized" msgstr "Không nhận ra định dạng tập tin" -#: src/xz/message.c:808 +#: src/xz/message.c:809 msgid "Unsupported options" msgstr "Tùy chọn không được hỗ trợ" -#: src/xz/message.c:811 +#: src/xz/message.c:812 msgid "Compressed data is corrupt" msgstr "Dữ liệu đã nén bị hỏng" -#: src/xz/message.c:814 +#: src/xz/message.c:815 msgid "Unexpected end of input" msgstr "Gặp kết thúc đầu vào bất ngờ" -#: src/xz/message.c:847 +#: src/xz/message.c:848 #, 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:875 +#: src/xz/message.c:876 #, 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:1042 +#: src/xz/message.c:1043 #, c-format msgid "%s: Filter chain: %s\n" msgstr "%s: Móc xích lọc: %s\n" -#: src/xz/message.c:1052 +#: src/xz/message.c:1053 #, 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:1078 +#: src/xz/message.c:1079 #, c-format msgid "" "Usage: %s [OPTION]... [FILE]...\n" @@ -581,17 +564,15 @@ msgstr "" "Nén hoặc giải nén các TẬP TIN có định dạng .xz.\n" "\n" -#: src/xz/message.c:1085 -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:1086 +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:1089 +#: src/xz/message.c:1090 msgid " Operation mode:\n" msgstr " Chế độ thao tác:\n" -#: src/xz/message.c:1092 +#: src/xz/message.c:1093 msgid "" " -z, --compress force compression\n" " -d, --decompress force decompression\n" @@ -603,7 +584,7 @@ msgstr "" " -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:1098 +#: src/xz/message.c:1099 msgid "" "\n" " Operation modifiers:\n" @@ -611,7 +592,7 @@ msgstr "" "\n" " Bộ chỉnh sửa thao tác:\n" -#: src/xz/message.c:1101 +#: src/xz/message.c:1102 msgid "" " -k, --keep keep (don't delete) input files\n" " -f, --force force overwrite of output file and (de)compress links\n" @@ -621,7 +602,7 @@ msgstr "" " -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:1107 +#: src/xz/message.c:1108 msgid "" " --single-stream decompress only the first stream, and silently\n" " ignore possible remaining input data" @@ -629,25 +610,23 @@ msgstr "" " --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:1110 +#: src/xz/message.c:1111 msgid "" " --no-sparse do not create sparse files when decompressing\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" " --files[=FILE] read filenames to process from FILE; if FILE is\n" " omitted, filenames are read from the standard input;\n" -" filenames must be terminated with the newline " -"character\n" +" filenames must be terminated with the newline character\n" " --files0[=FILE] like --files but use the null character as terminator" msgstr "" " --no-sparse đừng tạo các tập tin rải rác khi giải nén\n" " -S, --suffix=.ĐUÔI dùng hậu tố “.ĐUÔI” trên các tập tin nén\n" " --files[=TẬP-TIN] đọc các tập tin cần xử lý từ TẬP-TIN; nếu không có\n" -" TẬP-TIN thì tên tập tin sẽ được đọc vào từ đầu vào " -"tiêu\n" +" TẬP-TIN thì tên tập tin sẽ được đọc vào từ đầu vào tiêu\n" " 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:1119 +#: src/xz/message.c:1120 msgid "" "\n" " Basic file format and compression options:\n" @@ -655,46 +634,39 @@ msgstr "" "\n" " Các tùy chọn về định dạng và nén cơ bản:\n" -#: src/xz/message.c:1121 +#: src/xz/message.c:1122 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'" msgstr "" -" -F, --format=ĐDạng định dạng tập tin cần mã hóa hoặc giải mã; giá trị có " -"thể\n" +" -F, --format=ĐDạng định dạng tập tin cần mã hóa hoặc giải mã; giá trị có thể\n" " là “auto” (mặc định), “xz”, “lzma”, và “raw”\n" " -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:1126 -msgid "" -" --ignore-check don't verify the integrity check when decompressing" +#: src/xz/message.c:1127 +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:1130 +#: src/xz/message.c:1131 msgid "" -" -0 ... -9 compression preset; default is 6; take compressor " -"*and*\n" -" decompressor memory usage into account before using " -"7-9!" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" msgstr "" -" -0 ... -9 đặt mức nén; mặc định là 6; tiêu dùng nhiều bộ nhớ khi " -"nén\n" +" -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:1134 +#: src/xz/message.c:1135 msgid "" -" -e, --extreme try to improve compression ratio by using more CPU " -"time;\n" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" msgstr "" -" -e, --extreme cố gắng nâng cao mức nén bằng cách dùng nhiều CPU " -"hơn;\n" +" -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:1138 +#: src/xz/message.c:1139 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" @@ -702,18 +674,17 @@ msgstr "" " -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:1143 +#: src/xz/message.c:1144 msgid "" " --block-size=SIZE\n" -" start a new .xz block after every SIZE bytes of " -"input;\n" +" start a new .xz block after every SIZE bytes of input;\n" " use this to set the block size for threaded compression" msgstr "" " --block-size=CỠ\n" " 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:1147 +#: src/xz/message.c:1148 msgid "" " --block-list=SIZES\n" " start a new .xz block after the given comma-separated\n" @@ -723,30 +694,25 @@ msgstr "" " 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:1151 +#: src/xz/message.c:1152 msgid "" " --flush-timeout=TIMEOUT\n" -" when compressing, if more than TIMEOUT milliseconds " -"has\n" -" passed since the previous flush and reading more " -"input\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" " would block, all pending data is flushed out" msgstr "" " --flush-timeout=THỜI_GIAN_CHỜ\n" -" khi đang nén, nếu đã trải qua hơn THỜI_GIAN_CHỜ milli-" -"giây\n" -" kể từ lần đẩy dữ liệu lên đĩa trước đó và đang đọc " -"thêm\n" +" khi đang nén, nếu đã trải qua hơn THỜI_GIAN_CHỜ milli-giây\n" +" 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:1157 +#: src/xz/message.c:1158 #, no-c-format msgid "" " --memlimit-compress=LIMIT\n" " --memlimit-decompress=LIMIT\n" " -M, --memlimit=LIMIT\n" -" set memory usage limit for compression, " -"decompression,\n" +" set memory usage limit for compression, decompression,\n" " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" msgstr "" " --memlimit-compress=GIỚI_HẠN\n" @@ -756,17 +722,15 @@ msgstr "" " 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:1164 +#: src/xz/message.c:1165 msgid "" -" --no-adjust if compression settings exceed the memory usage " -"limit,\n" -" give an error instead of adjusting the settings " -"downwards" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" msgstr "" " --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:1170 +#: src/xz/message.c:1171 msgid "" "\n" " Custom filter chain for compression (alternative for using presets):" @@ -774,13 +738,11 @@ msgstr "" "\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:1179 +#: src/xz/message.c:1180 msgid "" "\n" -" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero " -"or\n" -" --lzma2[=OPTS] more of the following options (valid values; " -"default):\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" " preset=PRE reset options to a preset (0-9[e])\n" " dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" " lc=NUM number of literal context bits (0-4; 3)\n" @@ -788,14 +750,11 @@ msgid "" " pb=NUM number of position bits (0-4; 2)\n" " mode=MODE compression mode (fast, normal; normal)\n" " nice=NUM nice length of a match (2-273; 64)\n" -" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; " -"bt4)\n" -" depth=NUM maximum search depth; 0=automatic " -"(default)" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" msgstr "" "\n" -" --lzma1[=CTC] LZMA1 hay LZMA2; CÁC-TÙY-CHỌN là danh sách của không " -"hoặc\n" +" --lzma1[=CTC] LZMA1 hay LZMA2; CÁC-TÙY-CHỌN là danh sách của không hoặc\n" " --lzma2[=CTC] hơn các tùy chọn sau đây (giá trị hợp lệ; mặc định):\n" " preset=PRE các tùy chọn tối ưu nén (0-9[e])\n" " dict=SỐ cỡ từ điển (4KiB - 1536MiB; 8MiB)\n" @@ -804,12 +763,10 @@ msgstr "" " pb=SỐ số bít vị trí (0-4; 2)\n" " mode=CHẾ_ĐỘ chế độ nén (fast, normal; normal)\n" " nice=SỐ chiều dài “tốt” của khớp (2-273; 64)\n" -" 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)" +" 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:1194 +#: src/xz/message.c:1195 msgid "" "\n" " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" @@ -829,10 +786,9 @@ msgstr "" " --armthumb[=OPTS] bộ lọc ARM-Thumb BCJ (chỉ little endian)\n" " --sparc[=OPTS] bộ lọc SPARC BCJ\n" " 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)" +" start=SỐ khoảng bù khởi đầu cho chuyển đổi (mặc định=0)" -#: src/xz/message.c:1206 +#: src/xz/message.c:1207 msgid "" "\n" " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" @@ -845,7 +801,7 @@ msgstr "" " 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:1214 +#: src/xz/message.c:1215 msgid "" "\n" " Other options:\n" @@ -853,39 +809,34 @@ msgstr "" "\n" " Tùy chọn khác:\n" -#: src/xz/message.c:1217 +#: src/xz/message.c:1218 msgid "" -" -q, --quiet suppress warnings; specify twice to suppress errors " -"too\n" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" msgstr "" " -q, --quiet không xuất các cảnh báo;\n" " 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:1222 +#: src/xz/message.c:1223 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" +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:1224 -msgid "" -" --robot use machine-parsable messages (useful for scripts)" +#: src/xz/message.c:1225 +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:1227 +#: src/xz/message.c:1228 msgid "" -" --info-memory display the total amount of RAM and the currently " -"active\n" +" --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" msgstr "" " --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:1230 +#: src/xz/message.c:1231 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" @@ -894,7 +845,7 @@ msgstr "" " (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:1234 +#: src/xz/message.c:1235 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" @@ -903,11 +854,11 @@ msgstr "" " -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:1239 +#: src/xz/message.c:1240 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:1241 +#: src/xz/message.c:1242 msgid "" "\n" "With no FILE, or when FILE is -, read standard input.\n" @@ -919,27 +870,26 @@ msgstr "" #. 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:1247 +#: src/xz/message.c:1248 #, 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: .\n" -#: src/xz/message.c:1249 +#: src/xz/message.c:1250 #, c-format msgid "%s home page: <%s>\n" msgstr "Trang chủ %s: <%s>.\n" -#: src/xz/message.c:1253 +#: src/xz/message.c:1254 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." #: src/xz/options.c:86 #, c-format msgid "%s: Options must be `name=value' pairs separated with commas" -msgstr "" -"%s: Các tùy chọn phải là các cặp “name=value” ngăn cách nhau bằng dấu phẩy" +msgstr "%s: Các tùy chọn phải là các cặp “name=value” ngăn cách nhau bằng dấu phẩy" #: src/xz/options.c:93 #, c-format @@ -967,11 +917,8 @@ msgstr "Bộ tìm khớp đã chọn yêu cầu mức “tốt” ít nhất là #: 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" +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 @@ -1027,12 +974,16 @@ msgstr "Gặp lỗi khi ghi dữ liệu vào đầu ra tiêu chuẩn" msgid "Unknown error" msgstr "Lỗi chưa biết" +#~ 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" + +#~ msgid "Error setting O_NONBLOCK on standard output: %s" +#~ msgstr "Lỗi cài đặt O_NONBLOCK trên đầu ra tiêu chuẩn: %s" + #~ msgid "" #~ " --block-size=SIZE\n" -#~ " when compressing to the .xz format, start a new " -#~ "block\n" -#~ " after every SIZE bytes of input; 0=disabled " -#~ "(default)" +#~ " when compressing to the .xz format, start a new block\n" +#~ " after every SIZE bytes of input; 0=disabled (default)" #~ msgstr "" #~ " --block-size=CỠ\n" #~ " khi nén thành định dạng .xz, bắt đầu khối mới\n" -- cgit v1.2.3 From 4ec2feaefa310b4249eb41893caf526e5c51ee39 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 22:37:54 +0200 Subject: Translations: Add hu, zh_CN, and zh_TW. I made a few white space changes to these without getting them approved by the translation teams. (I tried to contact the hu and zh_TW teams but didn't succeed. I didn't contact the zh_CN team.) --- po/LINGUAS | 3 + po/hu.po | 985 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/zh_CN.po | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/zh_TW.po | 956 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2907 insertions(+) create mode 100644 po/hu.po create mode 100644 po/zh_CN.po create mode 100644 po/zh_TW.po diff --git a/po/LINGUAS b/po/LINGUAS index 97ee573b..1acd165a 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -2,7 +2,10 @@ cs de fi fr +hu it pl pt_BR vi +zh_CN +zh_TW diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..e29f882b --- /dev/null +++ b/po/hu.po @@ -0,0 +1,985 @@ +# Hungarian translation for xz. +# This file is put in the public domain. +# +# Meskó Balázs , 2019. +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-11-18 09:57+0100\n" +"Last-Translator: Meskó Balázs \n" +"Language-Team: Hungarian \n" +"Language: hu\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: Lokalize 19.08.2\n" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s: Érvénytelen argumentum a --block-list kapcsolóhoz" + +#: src/xz/args.c:73 +#, 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 +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 +#, 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 +#, 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 +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 +#, 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 +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 +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 +msgid "Maximum number of filters is four" +msgstr "A szűrők legnagyobb száma négy" + +#: src/xz/coder.c:129 +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 +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 +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 +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 +msgid "LZMA1 cannot be used with the .xz format" +msgstr "Az LZMA1 nem használható az .xz formátummal" + +#: src/xz/coder.c:209 +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 +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 +#, c-format +msgid "Using up to % threads." +msgstr "Legfeljebb % szál használata." + +#: src/xz/coder.c:251 +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 +#, 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 +#, 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" + +#: src/xz/coder.c:354 +#, 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" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "Hiba a csővezeték létrehozásakor: %s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "A homokozó ki lett kapcsolva a nem kompatibilis parancssori argumentumok miatt" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "A homokozó sikeresen engedélyezve" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "A homokozó engedélyezése sikertelen" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s: poll() sikertelen: %s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, 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:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s: Nem távolítható el: %s" + +#: src/xz/file_io.c:364 +#, 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:370 +#, 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:389 +#, 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:515 +#, 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:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s: Szimbolikus link, kihagyás" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s: Könyvtár, kihagyás" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s: Nem szabályos fájl, kihagyás" + +#: src/xz/file_io.c:686 +#, 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:693 +#, 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:700 +#, 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:788 +#, 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:836 +#, 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:1014 +#, 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:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s: A fájl lezárása sikertelen: %s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, 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:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s: Olvasási hiba: %s" + +#: src/xz/file_io.c:1177 +#, 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:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s: Váratlan fájlvég" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s: Írási hiba: %s" + +#: src/xz/hardware.c:107 +msgid "Disabled" +msgstr "Letiltva" + +#. TRANSLATORS: Test with "xz --info-memory" to see if +#. the alignment looks nice. +#: src/xz/hardware.c:126 +msgid "Total amount of physical memory (RAM): " +msgstr "Az összes fizikai memória (RAM): " + +#: src/xz/hardware.c:128 +msgid "Memory usage limit for compression: " +msgstr "Memóriahasználat korlátja tömörítéskor: " + +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +msgstr "Memóriahasználat korlátja kibontáskor: " + +#. 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" +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 +msgid "Unknown-2" +msgstr "Névtelen-2" + +#: src/xz/list.c:73 +msgid "Unknown-3" +msgstr "Névtelen-3" + +#: src/xz/list.c:75 +msgid "Unknown-5" +msgstr "Névtelen-5" + +#: src/xz/list.c:76 +msgid "Unknown-6" +msgstr "Névtelen-6" + +#: src/xz/list.c:77 +msgid "Unknown-7" +msgstr "Névtelen-7" + +#: src/xz/list.c:78 +msgid "Unknown-8" +msgstr "Névtelen-8" + +#: src/xz/list.c:79 +msgid "Unknown-9" +msgstr "Névtelen-9" + +#: src/xz/list.c:81 +msgid "Unknown-11" +msgstr "Névtelen-11" + +#: src/xz/list.c:82 +msgid "Unknown-12" +msgstr "Névtelen-12" + +#: src/xz/list.c:83 +msgid "Unknown-13" +msgstr "Névtelen-13" + +#: src/xz/list.c:84 +msgid "Unknown-14" +msgstr "Névtelen-14" + +#: src/xz/list.c:85 +msgid "Unknown-15" +msgstr "Névtelen-15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s: A fájl üres" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s: Túl kicsi, hogy érvényes .xz fájl legyen" + +#. 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" +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 +msgid "Yes" +msgstr "Igen" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "Nem" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, 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 +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 +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 +msgid "--list does not support reading from standard input" +msgstr "A --list nem támogatja a szabványos bemenetről beolvasást" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s: Hiba a fájlnevek olvasásakor: %s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s: A bemenet váratlanul véget ért a fájlnevek olvasásakor" + +#: src/xz/main.c:120 +#, c-format +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 +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 +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" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "Belső hiba (bug)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "A szignálkezelők nem hozhatók létre" + +#: src/xz/message.c:793 +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:796 +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:803 +msgid "Memory usage limit reached" +msgstr "Memóriahasználat korlátja elérve" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "A fájlformátum nem felismert" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "Nem támogatott kapcsolók" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "A tömörített adatok megsérültek" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "A bemenet váratlanul véget ért" + +#: src/xz/message.c:848 +#, 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:876 +#, 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:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s: Szűrőlánc: %s\n" + +#: src/xz/message.c:1053 +#, 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:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" +"Használat: %s [KAPCSOLÓ]... [FÁJL]...\n" +".xz formátumú FÁJLok tömörítése vagy kibontása.\n" +"\n" + +#: src/xz/message.c:1086 +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:1090 +msgid " Operation mode:\n" +msgstr " Működési mód:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" +" -z, --compress kényszerített tömörítés\n" +" -d, --decompress kényszerített kibontás\n" +" -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:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +" Műveleti módosítók:\n" + +#: src/xz/message.c:1102 +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 "" +" -k, --keep bemeneti fájlok megtartása (ne törölje)\n" +" -f, --force kimeneti fájl kényszerített felülírása,\n" +" és a linkek tömörítése/kibontása\n" +" -c, --stdout írás a szabványos kimenetre írás, és nem törli a\n" +" bemeneti fájlokat" + +#: src/xz/message.c:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" +" --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:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +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" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" +"\n" +" Alapvető fájlformátum és tömörítési beállítások:\n" + +#: src/xz/message.c:1122 +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'" +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" +" -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:1127 +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:1131 +msgid "" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" +msgstr "" +" -0 ... -9 tömörítési előbeállítás; alapértelmezett a 6;\n" +" 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:1135 +msgid "" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" +" does not affect decompressor memory requirements" +msgstr "" +" -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:1139 +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 "" +" -T, --threads=SZÁM legfeljebb ennyi szál használata; alapértelmezett az 1;\n" +" állítsa 0-ra, hogy annyi szálat használjon, amennyi\n" +" processzormag áll rendelkezésre" + +#: src/xz/message.c:1144 +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 "" +" --block-size=MÉRET\n" +" ú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:1148 +msgid "" +" --block-list=SIZES\n" +" start a new .xz block after the given comma-separated\n" +" intervals of uncompressed data" +msgstr "" +" --block-list=MÉRETEK\n" +" ú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:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" +" --flush-timeout=IDŐTÚLLÉPÉS\n" +" tömörítéskor, ha több mint IDŐTÚLLÉPÉS ezredmásodperc\n" +" 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:1158 +#, 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" +msgstr "" +" --memlimit-compress=KORLÁT\n" +" --memlimit-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" + +#: src/xz/message.c:1165 +msgid "" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" +msgstr "" +" --no-adjust ha a tömörítési beállítások túllépik a memóriahasználati\n" +" korlátot, akkor hibát fog adni a beállítások lefelé\n" +" állítása helyett" + +#: src/xz/message.c:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" +"\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:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" +"\n" +" --lzma1[=KAPCS] LZMA1 vagy LZMA2; a KAPCS nulla vagy több vesszővel\n" +" --lzma2[=KAPCS] elválasztott kapcsoló az alábbiak közül\n" +" (érvényes érték; alapértelmezett):\n" +" preset=ELŐ visszaállítás egy előbeállításra (0-9[e])\n" +" dict=SZÁM szótárméret (4KiB - 1536MiB; 8MiB)\n" +" lc=SZÁM literál környezeti bitek száma (0-4; 3)\n" +" lp=SZÁM literál pozícióbitek száma (0-4; 0)\n" +" pb=SZÁM pozícióbitek száma (0-4; 2)\n" +" mode=MÓD tömörítési mód (fast, normal; normal)\n" +" nice=SZÁM az egyezés „nice” hossza (2-273; 64)\n" +" mf=NÉV egyezéskereső (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=SZÁM legnagyobb keresési mélység; 0=automatikus\n" +" (alapértelmezett)" + +#: src/xz/message.c:1195 +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)" +msgstr "" +"\n" +" --x86[=KAPCS] x86 BCJ szűrő (32 bites és 64 bites)\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)" + +#: src/xz/message.c:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" +"\n" +" --delta[=OPTS] Delta szűrő; érvényes KAPCSOLÓK\n" +" (érvényes értékek; alapértelmezett default):\n" +" dist=SZÁM az egymásból kivont bájtok közti\n" +" távolság (1-256; 1)" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +" Egyéb kapcsolók:\n" + +#: src/xz/message.c:1218 +msgid "" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" +" -v, --verbose be verbose; specify twice for even more verbose" +msgstr "" +" -q, --quiet figyelmeztetések elrejtése; adja meg kétszer, hogy a\n" +" hibákat is elrejtse\n" +" -v, --verbose legyen bőbeszédű; adja meg kétszer, hogy még bőbeszédűbb\n" +" legyen" + +#: src/xz/message.c:1223 +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:1225 +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:1228 +msgid "" +" --info-memory display the total amount of RAM and the currently active\n" +" memory usage limits, and exit" +msgstr "" +" --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:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -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:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -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:1240 +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:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"FÁJL nélkül, vagy ha a FÁJL -, olvasás a szabványos bemenetről.\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, 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:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s honlap: <%s>\n" + +#: src/xz/message.c:1254 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "EZ EGY FEJLESZTŐI VÁLTOZAT, NEM ÉLES HASZNÁLATRA SZÁNT." + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s: A kapcsolóknak vesszőkkel elválasztott „név=érték” pároknak kell lenniük" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s: Érvénytelen kapcsolónév" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s: Érvénytelen kapcsolóérték" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "Nem támogatott LZMA1/LZMA2 előbeállítás: %s" + +#: src/xz/options.c:355 +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 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "A kiválasztott egyezéskeresőhöz legalább nice=% 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 +#, 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 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s: Érvénytelen fájlnév utótag" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s: Az érték nem nemnegatív decimális egész szám" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s: Érvénytelen szorzó utótag" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "Az érvényes utótagok: „KiB” (2^10), „MiB” (2^20) és „GiB” (2^30)." + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "A(z) „%s” kapcsoló értékének a(z) [%, %] tartományban kell lennie" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "Üres fájlnév, kihagyás" + +#: src/xz/util.c:271 +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:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "A tömörített adatokat nem lehet kiírni a terminálba" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "A szabványos kimenetre írás sikertelen" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "Ismeretlen hiba" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..b5e474d0 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,963 @@ +# Chinese translations for xz package +# xz 软件包的简体中文翻译。 +# This file is put in the public domain. +# Boyuan Yang <073plan@gmail.com>, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-03-20 15:25-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese (simplified) \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" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s:--block-list 的无效参数" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "%s:--block-list 得到过多参数" + +#: src/xz/args.c:102 +msgid "0 can only be used as the last element in --block-list" +msgstr "0 仅可用于 --block-list 的最后一个元素" + +#: src/xz/args.c:406 +#, c-format +msgid "%s: Unknown file format type" +msgstr "%s:位置文件格式类型" + +#: src/xz/args.c:429 src/xz/args.c:437 +#, c-format +msgid "%s: Unsupported integrity check type" +msgstr "%s:不支持的完整性检查类型" + +#: src/xz/args.c:473 +msgid "Only one file can be specified with `--files' or `--files0'." +msgstr "仅可使用“--files”或“--files0”指定一个文件。" + +#: src/xz/args.c:541 +#, c-format +msgid "The environment variable %s contains too many arguments" +msgstr "环境变量 %s 包含过多参数" + +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "压缩支持已在构建时禁用" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "解压支持已在构建时禁用" + +#: src/xz/coder.c:110 +msgid "Maximum number of filters is four" +msgstr "过滤器最多数量为四" + +#: src/xz/coder.c:129 +msgid "Memory usage limit is too low for the given filter setup." +msgstr "内存用量限制对指定过滤器设置过低。" + +#: src/xz/coder.c:159 +msgid "Using a preset in raw mode is discouraged." +msgstr "不推荐在 raw 模式使用预设等级。" + +#: src/xz/coder.c:161 +msgid "The exact options of the presets may vary between software versions." +msgstr "各个预设等级所使用的准确选项列表在不同软件版本之间可能不同。" + +#: src/xz/coder.c:184 +msgid "The .lzma format supports only the LZMA1 filter" +msgstr ".lzma 格式只支持 LZMA1 过滤器" + +#: src/xz/coder.c:192 +msgid "LZMA1 cannot be used with the .xz format" +msgstr "LZMA1 无法用于 .xz 格式" + +#: src/xz/coder.c:209 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "过滤器链和 --flush-timeout 不兼容" + +#: src/xz/coder.c:215 +msgid "Switching to single-threaded mode due to --flush-timeout" +msgstr "因 --flush-timeout 而切换至单线程模式" + +#: src/xz/coder.c:235 +#, c-format +msgid "Using up to % threads." +msgstr "使用最多 % 个线程。" + +#: src/xz/coder.c:251 +msgid "Unsupported filter chain or filter options" +msgstr "不支持的过滤器链或过滤器选项" + +#: src/xz/coder.c:263 +#, c-format +msgid "Decompression will need %s MiB of memory." +msgstr "解压缩需要 %s MiB 的内存。" + +#: src/xz/coder.c:300 +#, 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 的内存用量限制" + +#: src/xz/coder.c:354 +#, 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 的内存用量限制" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "创建管道时出错:%s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "沙盒已因不兼容的命令行参数而禁用" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "已成功启用沙盒" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "沙盒启用失败" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s:poll() 失败:%s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, c-format +msgid "%s: File seems to have been moved, not removing" +msgstr "%s:文件似乎已移动,不再进行删除操作" + +#: src/xz/file_io.c:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s:无法删除:%s" + +#: src/xz/file_io.c:364 +#, c-format +msgid "%s: Cannot set the file owner: %s" +msgstr "%s:无法设置文件所有者:%s" + +#: src/xz/file_io.c:370 +#, c-format +msgid "%s: Cannot set the file group: %s" +msgstr "%s:无法设置文件所有组:%s" + +#: src/xz/file_io.c:389 +#, c-format +msgid "%s: Cannot set the file permissions: %s" +msgstr "%s:无法设置文件权限:%s" + +#: src/xz/file_io.c:515 +#, c-format +msgid "Error getting the file status flags from standard input: %s" +msgstr "从标准输入获取文件状态标志出错:%s" + +#: src/xz/file_io.c:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s:是符号链接,跳过" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s:是目录,跳过" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s:不是标准文件,跳过" + +#: src/xz/file_io.c:686 +#, c-format +msgid "%s: File has setuid or setgid bit set, skipping" +msgstr "%s:文件有设置用户ID或设置组ID标识,跳过" + +#: src/xz/file_io.c:693 +#, c-format +msgid "%s: File has sticky bit set, skipping" +msgstr "%s:文件有粘滞位标识,跳过" + +#: src/xz/file_io.c:700 +#, c-format +msgid "%s: Input file has more than one hard link, skipping" +msgstr "%s:输入文件有多于一个硬链接,跳过" + +#: src/xz/file_io.c:788 +#, c-format +msgid "Error restoring the status flags to standard input: %s" +msgstr "回复标准输入的状态标志时出错:%s" + +#: src/xz/file_io.c:836 +#, c-format +msgid "Error getting the file status flags from standard output: %s" +msgstr "获取标准输出的文件状态标志时出错:%s" + +#: src/xz/file_io.c:1014 +#, c-format +msgid "Error restoring the O_APPEND flag to standard output: %s" +msgstr "恢复标准输出的 O_APPEND 标志时出错:%s" + +#: src/xz/file_io.c:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s:关闭文件失败:%s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, c-format +msgid "%s: Seeking failed when trying to create a sparse file: %s" +msgstr "%s:尝试创建稀疏文件时 seek 失败:%s" + +#: src/xz/file_io.c:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s:读取错误:%s" + +#: src/xz/file_io.c:1177 +#, c-format +msgid "%s: Error seeking the file: %s" +msgstr "%s:seek 文件时出错:%s" + +#: src/xz/file_io.c:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s:未预期的文件结束" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s:写入错误:%s" + +#: src/xz/hardware.c:107 +msgid "Disabled" +msgstr "已禁用" + +#. TRANSLATORS: Test with "xz --info-memory" to see if +#. the alignment looks nice. +#: src/xz/hardware.c:126 +msgid "Total amount of physical memory (RAM): " +msgstr "物理内存(RAM)总量: " + +#: src/xz/hardware.c:128 +msgid "Memory usage limit for compression: " +msgstr "用于压缩的内存用量限制: " + +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +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" +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 +msgid "Unknown-2" +msgstr "未知-2" + +#: src/xz/list.c:73 +msgid "Unknown-3" +msgstr "未知-3" + +#: src/xz/list.c:75 +msgid "Unknown-5" +msgstr "未知-5" + +#: src/xz/list.c:76 +msgid "Unknown-6" +msgstr "未知-6" + +#: src/xz/list.c:77 +msgid "Unknown-7" +msgstr "未知-7" + +#: src/xz/list.c:78 +msgid "Unknown-8" +msgstr "未知-8" + +#: src/xz/list.c:79 +msgid "Unknown-9" +msgstr "未知-9" + +#: src/xz/list.c:81 +msgid "Unknown-11" +msgstr "未知-11" + +#: src/xz/list.c:82 +msgid "Unknown-12" +msgstr "未知-12" + +#: src/xz/list.c:83 +msgid "Unknown-13" +msgstr "未知-13" + +#: src/xz/list.c:84 +msgid "Unknown-14" +msgstr "未知-14" + +#: src/xz/list.c:85 +msgid "Unknown-15" +msgstr "未知-15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s:文件为空" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s:过小而不是有效的 .xz 文件" + +#. 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" +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 +msgid "Yes" +msgstr "是" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "否" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, c-format +msgid "%s file\n" +msgid_plural "%s files\n" +msgstr[0] "%s 文件\n" + +#: src/xz/list.c:1070 +msgid "Totals:" +msgstr "总计:" + +#: src/xz/list.c:1071 +#, c-format +msgid " Number of files: %s\n" +msgstr " 文件数量: %s\n" + +#: src/xz/list.c:1146 +msgid "--list works only on .xz files (--format=xz or --format=auto)" +msgstr "--list 仅适用于 .xz 文件(--format=xz 或 --format=auto)" + +#: src/xz/list.c:1152 +msgid "--list does not support reading from standard input" +msgstr "--list 不支持从标准输入读取" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s:读取文件名列表时出错:%s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s:读取文件名列表时遇到未预期的输入结束" + +#: src/xz/main.c:120 +#, c-format +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 +msgid "Compression and decompression with --robot are not supported yet." +msgstr "尚不支持带 --robot 的压缩和解压缩。" + +#: src/xz/main.c:252 +msgid "Cannot read data from standard input when reading filenames from standard input" +msgstr "无法同时从标准输入读取数据和文件名列表" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s:" + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "内部错误(bug)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "无法建立信号处理器" + +#: src/xz/message.c:793 +msgid "No integrity check; not verifying file integrity" +msgstr "无完整性检查;将不验证文件完整性" + +#: src/xz/message.c:796 +msgid "Unsupported type of integrity check; not verifying file integrity" +msgstr "不支持的完整性检查类型;将不验证文件完整性" + +#: src/xz/message.c:803 +msgid "Memory usage limit reached" +msgstr "达到内存使用限制" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "无法识别文件格式" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "不支持的选项" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "压缩数据已损坏" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "输入意外结束" + +#: src/xz/message.c:848 +#, c-format +msgid "%s MiB of memory is required. The limiter is disabled." +msgstr "需要 %s MiB 的内存空间。限制已禁用。" + +#: src/xz/message.c:876 +#, c-format +msgid "%s MiB of memory is required. The limit is %s." +msgstr "需要 %s MiB 的内存空间。限制为 %s。" + +#: src/xz/message.c:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s:过滤器链:%s\n" + +#: src/xz/message.c:1053 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "请尝试执行“%s --help”来获取更多信息。" + +#: src/xz/message.c:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" +"用法:%s [选项]... [文件]...\n" +"使用 .xz 格式压缩或解压缩文件。\n" +"\n" + +#: src/xz/message.c:1086 +msgid "Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "必选参数对长短选项同时适用。\n" + +#: src/xz/message.c:1090 +msgid " Operation mode:\n" +msgstr " 操作模式:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" +" -z, --compress 强制压缩\n" +" -d, --decompress 强制解压缩\n" +" -t, --test 测试压缩文件完整性\n" +" -l, --list 列出 .xz 文件的信息" + +#: src/xz/message.c:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +" 操作修饰符:\n" + +#: src/xz/message.c:1102 +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 "" +" -k, --keep 保留(不要删除)输入文件\n" +" -f, --force 强制覆写输出文件和(解)压缩链接\n" +" -c, --stdout 向标准输出写入,同时不要删除输入文件" + +#: src/xz/message.c:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr " --single-stream 仅解压缩第一个流,忽略其后可能继续出现的输入数据" + +#: src/xz/message.c:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +msgstr "" +" --no-sparse 解压缩时不要创建稀疏文件\n" +" -S, --suffix=.SUF 压缩文件使用指定的“.SUF”后缀名\n" +" --files[=文件] 从指定文件读取要处理的文件名列表;如果省略了指定文件名,\n" +" 将从标准输入读取文件名列表;文件名必须使用换行符分隔\n" +" --files0[=文件] 类似 --files,但使用空字符进行分隔" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" +"\n" +" 基本文件格式和压缩选项:\n" + +#: src/xz/message.c:1122 +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'" +msgstr "" +" -F, --format=格式 要编码或解码的文件格式;可能的值包括\n" +" “auto”(默认)、“xz”、“lzma”和“raw”\n" +" -C, --check=类型 完整性检查类型:“none”(请谨慎使用)、\n" +" “crc32”、“crc64”(默认)或“sha256”" + +#: src/xz/message.c:1127 +msgid " --ignore-check don't verify the integrity check when decompressing" +msgstr " --ignore-check 解压缩时不要进行完整性检查验证" + +#: src/xz/message.c:1131 +msgid "" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" +msgstr "" +" -0 ... -9 压缩预设等级;默认为 6;使用 7-9 的等级之前,请先考虑\n" +" 压缩和解压缩所需的内存用量!(会占用大量内存空间)" + +#: src/xz/message.c:1135 +msgid "" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" +" does not affect decompressor memory requirements" +msgstr "" +" -e, --extreme 尝试使用更多 CPU 时间来改进压缩比率;\n" +" 不会影响解压缩的内存需求量" + +#: src/xz/message.c:1139 +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 "" +" -T, --threads=数量 使用最多指定数量的线程;默认值为 1;设置为 0\n" +" 可以使用与处理器内核数量相同的线程数" + +#: src/xz/message.c:1144 +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 "" +" --block-size=块大小\n" +" 输入每读取指定块大小的数据后即开始一个新的 .xz 块;\n" +" 使用该选项可以设置多线程压缩中的块大小" + +#: src/xz/message.c:1148 +msgid "" +" --block-list=SIZES\n" +" start a new .xz block after the given comma-separated\n" +" intervals of uncompressed data" +msgstr "" +" --block-list=块大小列表\n" +" 在所给出的未压缩数据间隔大小的数据之后开始一个新的\n" +" .xz 块(使用逗号分隔)" + +#: src/xz/message.c:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" +" --flush-timeout=超时时间\n" +" 进行压缩时,如果从上次刷洗输出之后经过了指定的超时时间\n" +" 且读取更多数据会被阻塞,则刷洗输出所有缓冲数据" + +#: src/xz/message.c:1158 +#, 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" +msgstr "" +" --memlimit-compress=限制用量\n" +" --memlimit-decompress=限制用量\n" +" -M, --memlimit=限制用量\n" +" 设置压缩、解压缩或者两者共同的内存用量限制;\n" +" 所指定限制量单位为字节,或以百分号 % 结尾表示内存比例,\n" +" 或者指定 0 取软件默认值" + +#: src/xz/message.c:1165 +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:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" +"\n" +" 用于压缩的自定义过滤器链(不使用预设等级时的备选用法):" + +#: src/xz/message.c:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" +"\n" +" --lzma1[=选项] LZMA1 或 LZMA2;指定选项是用逗号分隔的下列选项的组合,\n" +" --lzma2[=选项] 值应当为零或大于零(有效值;默认值):\n" +" preset=PRE 将选项重置为预设配置 (0-9[e])\n" +" dict=数字 字典大小 (4KiB - 1536MiB; 8MiB)\n" +" lc=数字 literal context 位的数量 (0-4; 3)\n" +" lp=数字 literal position 位的数量 (0-4; 0)\n" +" pb=数字 position 位的数量 (0-4; 2)\n" +" mode=模式 压缩模式 (fast, normal; normal)\n" +" nice=数字 匹配的 nice 值 (2-273; 64)\n" +" mf=名称 匹配搜索器 match finder\n" +" (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=数字 最大搜索深度; 0=自动(默认)" + +#: src/xz/message.c:1195 +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)" +msgstr "" +"\n" +" --x86[=选项] x86 BCJ 过滤器(32 位和 64 位)\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:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" +"\n" +" --delta[=选项] 增量过滤器;有效选项(有效值;默认值):\n" +" dist=NUM 相减的字节之间的距离 (1-256; 1)" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +" 其它选项:\n" + +#: src/xz/message.c:1218 +msgid "" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" +" -v, --verbose be verbose; specify twice for even more verbose" +msgstr "" +" -q, --quiet 不显示警告信息;指定两次可不显示错误信息\n" +" -v, --verbose 输出详细信息;指定两次可以输出更详细的信息" + +#: src/xz/message.c:1223 +msgid " -Q, --no-warn make warnings not affect the exit status" +msgstr " -Q, --no-warn 使得警告信息不影响程序退出返回值" + +#: src/xz/message.c:1225 +msgid " --robot use machine-parsable messages (useful for scripts)" +msgstr " --robot 使用机器可解析的信息(对于脚本有用)" + +#: src/xz/message.c:1228 +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:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -h, --help 显示短帮助信息(仅列出基本选项)\n" +" -H, --long-help 显示本长帮助信息" + +#: src/xz/message.c:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -h, --help 显示本短帮助信息并退出\n" +" -H, --long-help 显示长帮助信息(同时列出高级选项)" + +#: src/xz/message.c:1240 +msgid " -V, --version display the version number and exit" +msgstr " -V, --version 显示软件版本号并退出" + +#: src/xz/message.c:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"如果没有指定文件,或者文件为\"-\",则从标准输入读取。\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, c-format +msgid "Report bugs to <%s> (in English or Finnish).\n" +msgstr "" +"请使用英文或芬兰语向 <%s> 报告软件错误。\n" +"请使用中文向 TP 简体中文翻译团队 \n" +"报告软件的简体中文翻译错误。\n" + +#: src/xz/message.c:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s 主页:<%s>\n" + +#: src/xz/message.c:1254 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "这是开发版本,不适用于生产环境使用。" + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s:选项必须按照“名称=值”的格式成对出现,使用半角逗号分隔" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s:无效的选项名称" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s:无效的选项值" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "不支持的 LZMA1/LZMA2 预设等级:%s" + +#: src/xz/options.c:355 +msgid "The sum of lc and lp must not exceed 4" +msgstr "lc 和 lp 的和必须不大于 4" + +#: src/xz/options.c:359 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "所选中的匹配搜索器(match finder)至少需要 nice=%" + +#: 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 +#, c-format +msgid "%s: File already has `%s' suffix, skipping" +msgstr "%s:文件已有“%s”后缀名,跳过" + +#: src/xz/suffix.c:393 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s:无效的文件名后缀" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s:值不是非负十进制整数" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s:无效的乘数后缀" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "有效的后缀包括“KiB”(2^10)、“MiB”(2^20)和“GiB”(2^30)。" + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "选项“%s”的值必须位于 [%, %] 范围内" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "空文件名,跳过" + +#: src/xz/util.c:271 +msgid "Compressed data cannot be read from a terminal" +msgstr "压缩数据不能从终端读取" + +#: src/xz/util.c:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "压缩数据不能向终端写入" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "写入标准输出失败" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "未知错误" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..52c2fa8e --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,956 @@ +# Chinese translations for xz package. +# This file is put in the public domain. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-04-23 22:00+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese (traditional) \n" +"Language: zh_TW\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.2.1\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s:傳入 --block-list 的參數無效" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "%s:傳入 --block-list 的參數過多" + +#: src/xz/args.c:102 +msgid "0 can only be used as the last element in --block-list" +msgstr "0 只能作為 --block-list 的最後一個元素" + +#: src/xz/args.c:406 +#, c-format +msgid "%s: Unknown file format type" +msgstr "%s:未知檔案格式類型" + +#: src/xz/args.c:429 src/xz/args.c:437 +#, c-format +msgid "%s: Unsupported integrity check type" +msgstr "%s:不支援的完整性檢查類型" + +#: src/xz/args.c:473 +msgid "Only one file can be specified with `--files' or `--files0'." +msgstr "「--files」或「--files0」只能指定一個檔案。" + +#: src/xz/args.c:541 +#, c-format +msgid "The environment variable %s contains too many arguments" +msgstr "%s 環境變數包含過多參數" + +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "已在編譯時停用壓縮支援" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "已在編譯時停用解壓縮支援" + +#: src/xz/coder.c:110 +msgid "Maximum number of filters is four" +msgstr "最多只能指定 4 個篩選器" + +#: src/xz/coder.c:129 +msgid "Memory usage limit is too low for the given filter setup." +msgstr "記憶體用量限制過低,不足以設定指定的篩選器。" + +#: src/xz/coder.c:159 +msgid "Using a preset in raw mode is discouraged." +msgstr "不建議在 Raw 模式使用設定檔。" + +#: src/xz/coder.c:161 +msgid "The exact options of the presets may vary between software versions." +msgstr "設定檔的選項可能因軟體版本而有異。" + +#: src/xz/coder.c:184 +msgid "The .lzma format supports only the LZMA1 filter" +msgstr ".lzma 格式僅支援 LZMA1 篩選器" + +#: src/xz/coder.c:192 +msgid "LZMA1 cannot be used with the .xz format" +msgstr "LZMA1 不能與 .xz 格式一同使用" + +#: src/xz/coder.c:209 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "篩選鏈不相容 --flush-timeout" + +#: src/xz/coder.c:215 +msgid "Switching to single-threaded mode due to --flush-timeout" +msgstr "因指定 --flush-timeout,因此切換到單執行緒模式" + +#: src/xz/coder.c:235 +#, c-format +msgid "Using up to % threads." +msgstr "使用最多 % 個執行緒。" + +#: src/xz/coder.c:251 +msgid "Unsupported filter chain or filter options" +msgstr "不支援的篩選鏈或篩選器選項" + +#: src/xz/coder.c:263 +#, c-format +msgid "Decompression will need %s MiB of memory." +msgstr "解壓縮將需要 %s MiB 的記憶體。" + +#: src/xz/coder.c:300 +#, 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 限制" + +#: src/xz/coder.c:354 +#, 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 限制" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "建立管線時發生錯誤:%s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "由於指定不相容的指令列參數,已停用沙盒" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "已成功啟用沙盒" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "無法啟用沙盒" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s:poll() 失敗:%s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, c-format +msgid "%s: File seems to have been moved, not removing" +msgstr "%s:檔案似乎已經遷移,不移除" + +#: src/xz/file_io.c:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s:無法移除:%s" + +#: src/xz/file_io.c:364 +#, c-format +msgid "%s: Cannot set the file owner: %s" +msgstr "%s:無法設定檔案所有者:%s" + +#: src/xz/file_io.c:370 +#, c-format +msgid "%s: Cannot set the file group: %s" +msgstr "%s:無法設定檔案群組:%s" + +#: src/xz/file_io.c:389 +#, c-format +msgid "%s: Cannot set the file permissions: %s" +msgstr "%s:無法設定檔案權限:%s" + +#: src/xz/file_io.c:515 +#, c-format +msgid "Error getting the file status flags from standard input: %s" +msgstr "從標準輸入取得檔案狀態旗標時發生錯誤:%s" + +#: src/xz/file_io.c:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s:是個符號連結,跳過" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s:是個目錄,跳過" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s:不是一般檔案,跳過" + +#: src/xz/file_io.c:686 +#, c-format +msgid "%s: File has setuid or setgid bit set, skipping" +msgstr "%s:檔案已設定 setuid 或 setgid 位元,跳過" + +#: src/xz/file_io.c:693 +#, c-format +msgid "%s: File has sticky bit set, skipping" +msgstr "%s:檔案已設定黏性位元(sticky bit),跳過" + +#: src/xz/file_io.c:700 +#, c-format +msgid "%s: Input file has more than one hard link, skipping" +msgstr "%s:輸入檔有超過一個實際連結 (hard link),跳過" + +#: src/xz/file_io.c:788 +#, c-format +msgid "Error restoring the status flags to standard input: %s" +msgstr "將狀態旗標還原到標準輸入時發生錯誤:%s" + +#: src/xz/file_io.c:836 +#, c-format +msgid "Error getting the file status flags from standard output: %s" +msgstr "從標準輸出取得檔案狀態旗標時發生錯誤:%s" + +#: src/xz/file_io.c:1014 +#, c-format +msgid "Error restoring the O_APPEND flag to standard output: %s" +msgstr "將 O_APPEND 旗標還原到標準輸出時發生錯誤:%s" + +#: src/xz/file_io.c:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s:關閉檔案失敗:%s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, c-format +msgid "%s: Seeking failed when trying to create a sparse file: %s" +msgstr "%s:嘗試建立疏鬆檔案時發生搜尋失敗:%s" + +#: src/xz/file_io.c:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s:讀取時發生錯誤:%s" + +#: src/xz/file_io.c:1177 +#, c-format +msgid "%s: Error seeking the file: %s" +msgstr "%s:搜尋檔案時發生錯誤:%s" + +#: src/xz/file_io.c:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s:非期望的檔案結尾" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s:寫入時發生錯誤:%s" + +#: src/xz/hardware.c:107 +msgid "Disabled" +msgstr "已停用" + +#. TRANSLATORS: Test with "xz --info-memory" to see if +#. the alignment looks nice. +#: src/xz/hardware.c:126 +msgid "Total amount of physical memory (RAM): " +msgstr "實體記憶體 (RAM) 總量:" + +#: src/xz/hardware.c:128 +msgid "Memory usage limit for compression: " +msgstr "壓縮記憶體限制: " + +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +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" +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 +msgid "Unknown-2" +msgstr "未知-2" + +#: src/xz/list.c:73 +msgid "Unknown-3" +msgstr "未知-3" + +#: src/xz/list.c:75 +msgid "Unknown-5" +msgstr "未知-5" + +#: src/xz/list.c:76 +msgid "Unknown-6" +msgstr "未知-6" + +#: src/xz/list.c:77 +msgid "Unknown-7" +msgstr "未知-7" + +#: src/xz/list.c:78 +msgid "Unknown-8" +msgstr "未知-8" + +#: src/xz/list.c:79 +msgid "Unknown-9" +msgstr "未知-9" + +#: src/xz/list.c:81 +msgid "Unknown-11" +msgstr "未知-11" + +#: src/xz/list.c:82 +msgid "Unknown-12" +msgstr "未知-12" + +#: src/xz/list.c:83 +msgid "Unknown-13" +msgstr "未知-13" + +#: src/xz/list.c:84 +msgid "Unknown-14" +msgstr "未知-14" + +#: src/xz/list.c:85 +msgid "Unknown-15" +msgstr "未知-15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s:檔案是空的" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s:因過小而不認為是個有效 .xz 檔" + +#. 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" +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 +msgid "Yes" +msgstr "是" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "否" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, c-format +msgid "%s file\n" +msgid_plural "%s files\n" +msgstr[0] "%s 個檔案\n" + +#: src/xz/list.c:1070 +msgid "Totals:" +msgstr "總計:" + +#: src/xz/list.c:1071 +#, c-format +msgid " Number of files: %s\n" +msgstr " 檔案數:        %s\n" + +#: src/xz/list.c:1146 +msgid "--list works only on .xz files (--format=xz or --format=auto)" +msgstr "--list 只能在 .xz 檔使用(--format=xz 或 --format=auto)" + +#: src/xz/list.c:1152 +msgid "--list does not support reading from standard input" +msgstr "--list 不支援從標準輸入讀取" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s:讀取檔名時發生錯誤:%s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s:讀取檔名時遇到非預期的輸入結尾" + +#: src/xz/main.c:120 +#, c-format +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 +msgid "Compression and decompression with --robot are not supported yet." +msgstr "尚未支援搭配 --robot 壓縮和解壓縮。" + +#: src/xz/main.c:252 +msgid "Cannot read data from standard input when reading filenames from standard input" +msgstr "從標準輸入讀取檔名時,無法從標準輸入讀取資料" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s:" + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "內部錯誤(臭蟲)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "無法確立信號處理器" + +#: src/xz/message.c:793 +msgid "No integrity check; not verifying file integrity" +msgstr "沒有完整性檢查;不驗證檔案完整性" + +#: src/xz/message.c:796 +msgid "Unsupported type of integrity check; not verifying file integrity" +msgstr "未知完整性檢查類型;不驗證檔案完整性" + +#: src/xz/message.c:803 +msgid "Memory usage limit reached" +msgstr "達到記憶體用量上限" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "無法識別檔案格式" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "不支援的選項" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "壓縮資料是損壞的" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "遇到非預期輸入結尾" + +#: src/xz/message.c:848 +#, c-format +msgid "%s MiB of memory is required. The limiter is disabled." +msgstr "需要 %s MiB 的記憶體。已停用記憶體限制器。" + +#: src/xz/message.c:876 +#, c-format +msgid "%s MiB of memory is required. The limit is %s." +msgstr "需要 %s MiB 的記憶體。記憶體限制為 %s。" + +#: src/xz/message.c:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s:篩選鏈:%s\n" + +#: src/xz/message.c:1053 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "嘗試「%s --help」取得更多資訊。" + +#: src/xz/message.c:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" +"用法:%s [選項]... [檔案]...\n" +"用 .xz 格式壓縮,或解壓縮 .xz 格式中的 <檔案>。\n" +"\n" + +#: src/xz/message.c:1086 +msgid "Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "長選項的必填參數,對短選項也是必填。\n" + +#: src/xz/message.c:1090 +msgid " Operation mode:\n" +msgstr " 操作模式:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" +" -z, --compress 強制壓縮\n" +" -d, --decompress 強制解壓縮\n" +" -t, --test 測試壓縮檔完整性\n" +" -l, --list 列出 .xz 檔的資訊" + +#: src/xz/message.c:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +" 操作修飾詞:\n" + +#: src/xz/message.c:1102 +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 "" +" -k, --keep 保留(不刪除)輸入檔\n" +" -f, --force 強制覆寫輸出檔並(解)壓縮連結\n" +" -c, --stdout 寫入標準輸出並不刪除輸入檔" + +#: src/xz/message.c:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" +" --single-stream 僅解壓縮第一個串流,再\n" +" 安靜地忽略可能剩餘的輸入檔" + +#: src/xz/message.c:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +msgstr "" +" --no-sparse 不在解壓縮時建立疏鬆檔案\n" +" -S, --suffix=.SUF 在壓縮檔加上後綴「.SUF」\n" +" --files[=檔案] 讀取檔案名稱以處理 <檔案>;如省略 <檔案>\n" +" 則從標準輸入讀取檔名;檔名必須以換行字元作為結尾\n" +" --files0[=檔案] 類似 --files 但是以 null 空字元作結尾" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" +"\n" +" 基本檔案格式與壓縮選項:\n" + +#: src/xz/message.c:1122 +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'" +msgstr "" +" -F, --format=格式 用於編碼或解碼的檔案格式;可用的值有:\n" +" 「auto」(預設)、「xz」、「lzma」及「raw」\n" +" -C, --check=檢查碼 完整性檢查類型:「none」(請小心使用)、「crc32」、\n" +" 「crc64」(預設值)或「sha256」" + +#: src/xz/message.c:1127 +msgid " --ignore-check don't verify the integrity check when decompressing" +msgstr " --ignore-check 不在解壓縮時驗證完整性" + +#: src/xz/message.c:1131 +msgid "" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" +msgstr "" +" -0 ... -9 壓縮設定檔;預設值為 6;使用 7-9 前請考慮\n" +" 壓縮和解壓縮所使用的記憶體!" + +#: src/xz/message.c:1135 +msgid "" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" +" does not affect decompressor memory requirements" +msgstr "" +" -e, --extreme 使用更多 CPU 時間以嘗試改善壓縮比;\n" +" 不影響解壓縮器的記憶體需求" + +#: src/xz/message.c:1139 +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 "" +" -T, --threads=NUM 使用最多 NUM 個執行緒;預設為 1;設成 0 則使用所有的\n" +" 處理機核心" + +#: src/xz/message.c:1144 +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 "" +" --block-size=大小\n" +" 輸入每 <大小> 位元組後,開始一個新 .xz 區塊;\n" +" 使用此功能以設定多執行緒壓縮的區塊大小" + +#: src/xz/message.c:1148 +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:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" + +#: src/xz/message.c:1158 +#, 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" +msgstr "" +" --memlimit-compress=限制\n" +" --memlimit-decompress=限制\n" +" -M, --memlimit=限制\n" +" 限制壓縮、解壓縮或兩者的記憶體用量上限;\n" +" <限制> 可以是位元組、記憶體百分比 (%)、或 0(預設值)" + +#: src/xz/message.c:1165 +msgid "" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" +msgstr "" +" --no-adjust 若壓縮設定超過記憶體用量上限,請給出\n" +" 錯誤而非下調設定" + +#: src/xz/message.c:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" +"\n" +" 自訂壓縮篩選鏈(使用設定檔時選用):" + +#: src/xz/message.c:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" +"\n" +" --lzma1[=操作] LZMA1 或 LZMA2;<操作> 是以下選項中的 0 個或以上選項\n" +" --lzma2[=操作] (有效值; 預設):\n" +" preset=PRE 將選項重設至某設定檔的選項 (0-9[e])\n" +" dict=NUM 字典大小 (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM 文字內文位元數 (0-4; 3)\n" +" lp=NUM 文字位置位元數 (0-4; 0)\n" +" pb=NUM 位置位元數 (0-4; 2)\n" +" mode=模式 壓縮模式 (fast, normal; normal)\n" +" nice=NUM 符合項目的 nice 長度 (2-273; 64)\n" +" mf=名稱 尋找符合搜尋器 (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM 最大搜尋深度;0=自動(預設)" + +#: src/xz/message.c:1195 +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)" +msgstr "" +"\n" +" --x86[=OPTS] x86 BCJ 篩選器 (32 位元和 64 位元)\n" +" --powerpc[=OPTS] PowerPC BCJ 篩選器(僅大端序)\n" +" --ia64[=OPTS] IA-64 (Itanium) BCJ 篩選器\n" +" --arm[=OPTS] ARM BCJ 篩選器(僅小端序)\n" +" --armthumb[=OPTS] ARM-Thumb BCJ 篩選器(僅小端序)\n" +" --sparc[=OPTS] SPARC BCJ 篩選器\n" +" 所有 BCJ 篩選器可用的 OPTS:\n" +" start=NUM 轉換起始位移(預設值=0)" + +#: src/xz/message.c:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +" 其他選項:\n" + +#: src/xz/message.c:1218 +msgid "" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" +" -v, --verbose be verbose; specify twice for even more verbose" +msgstr "" +" -q, --quiet 隱藏警告訊息;指定兩次也一併隱藏錯誤訊息\n" +" -v, --verbose 輸出較詳細內容;指定兩次更詳細輸出" + +#: src/xz/message.c:1223 +msgid " -Q, --no-warn make warnings not affect the exit status" +msgstr " -Q, --no-warn 即使有警告,退出狀態碼仍不變" + +#: src/xz/message.c:1225 +msgid " --robot use machine-parsable messages (useful for scripts)" +msgstr " --robot 使用機器可解析訊息(適合用於指令稿)" + +#: src/xz/message.c:1228 +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:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -h, --help 顯示較短說明(僅列出基本選項)\n" +" -H, --long-help 顯示較長說明後退出" + +#: src/xz/message.c:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -h, --help 顯示較短說明後退出\n" +" -H, --long-help 顯示較長說明(也列出進階選項)" + +#: src/xz/message.c:1240 +msgid " -V, --version display the version number and exit" +msgstr " -V, --version 顯示版本號碼後退出" + +#: src/xz/message.c:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"如果未指定 <檔案>,或 <檔案> 是 -,則從標準輸入讀取。\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, c-format +msgid "Report bugs to <%s> (in English or Finnish).\n" +msgstr "請回報臭蟲至 <%s>(使用英文或芬蘭語)。\n" + +#: src/xz/message.c:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s 首頁:<%s>\n" + +#: src/xz/message.c:1254 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "此為開發版本,不打算在生產環境使用。" + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s:選項形式必須為以逗號分隔的「name=value」值對" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s:選項名稱無效" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s:選項值無效" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "不支援的 LZMA1/LZMA2 設定檔:%s" + +#: src/xz/options.c:355 +msgid "The sum of lc and lp must not exceed 4" +msgstr "lc 和 lp 的總和不能超過 4" + +#: src/xz/options.c:359 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "選取的符合搜尋工具需要至少 nice=%" + +#: 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 +#, c-format +msgid "%s: File already has `%s' suffix, skipping" +msgstr "%s:檔案已有「%s」後綴,跳過" + +#: src/xz/suffix.c:393 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s:檔名後綴無效" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s:數值不是非負數十進位整數" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s:乘數後綴無效" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "有效的後綴有「KiB」(2^10)、「MiB」(2^20) 及「GiB」(2^30)。" + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "選項「%s」的數值必須在 [%, %] 範圍內" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "空檔名,跳過" + +#: src/xz/util.c:271 +msgid "Compressed data cannot be read from a terminal" +msgstr "不能從終端機讀入已壓縮資料" + +#: src/xz/util.c:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "不能將已壓縮資料寫入終端機" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "寫入標準輸出失敗" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "未知錯誤" -- cgit v1.2.3 From 00a037ee9c8ee5a03cf9744e05570ae93d56b875 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 17:58:51 +0200 Subject: DOS: Update config.h. The added defines assume GCC >= 4.8. --- dos/config.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dos/config.h b/dos/config.h index 7a385e10..5b0e089f 100644 --- a/dos/config.h +++ b/dos/config.h @@ -116,6 +116,14 @@ /* Define to 1 if the system has the type `_Bool'. */ #define HAVE__BOOL 1 +/* Define to 1 if the GNU C extension __builtin_assume_aligned is supported. + */ +#define HAVE___BUILTIN_ASSUME_ALIGNED 1 + +/* Define to 1 if the GNU C extensions __builtin_bswap16/32/64 are supported. + */ +#define HAVE___BUILTIN_BSWAPXX 1 + /* Define to 1 to disable debugging code. */ #define NDEBUG 1 -- cgit v1.2.3 From 29e5bd71612253281fb22bbaa0a566990a74dcc3 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 19:36:07 +0200 Subject: DOS: Update instructions in dos/INSTALL.txt. --- dos/INSTALL.txt | 59 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/dos/INSTALL.txt b/dos/INSTALL.txt index 26dc611c..4c13211f 100644 --- a/dos/INSTALL.txt +++ b/dos/INSTALL.txt @@ -6,52 +6,50 @@ Introduction This document explains how to build XZ Utils for DOS using DJGPP. The resulting binaries should run at least on various DOS versions - and under Windows 95/98/98SE/ME, although the Windows version of - XZ Utils is recommended under Windows 95 and later. + and under Windows 95/98/98SE/ME. - This is currently experimental and has got very little testing. + This is somewhat experimental and has got very little testing. Note: Makefile and config.h are updated only now and then. This - means that especially if you checked out a development version, - building for DOS probably won't work without updating Makefile - and config.h first. + means that if you checked out a development version, building for + DOS might not work without updating Makefile and config.h first. Getting and Installing DJGPP You may use to help - deciding what to download, but as of writing (2010-10-09) that may - not be the most convenient way taking into account what components - are actually required to build XZ Utils. However, using the - zip-picker can still be worth doing to get nice short summary of - installation instructions (they can be found from readme.1st too). + 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 + nice short summary of installation instructions (they can be found + from readme.1st too). For a more manual method, first select a mirror from - . You need - the following files: + and go the + subdirectory named "current". You need the following files: unzip32.exe (if you don't already have a LFN-capable unzipper) - beta/v2/djdev204.zip - v2gnu/bnu219b.zip - v2gnu/gcc444b.zip - v2gnu/mak3791b.zip + v2/djdev205.zip + v2gnu/bnu234b.zip + v2gnu/gcc920b.zip + v2gnu/mak43b.zip v2misc/csdpmi7b.zip If newer versions are available, probably you should try them first. - Note that djdev203.zip is too old to build XZ Utils; you need at - least djdev204.zip. Also note that you want csdpmi7b.zip even if you - run under Windows or DOSEMU, because the XZ Utils Makefile will embed - cwsdstub.exe to the resulting binaries. + Note that versions older than djdev205.zip aren't supported. Also + note that you want csdpmi7b.zip even if you run under Windows or + DOSEMU because the XZ Utils Makefile will embed cwsdstub.exe to + the resulting xz.exe. - See the instructions in readme.1st found from djdev204.zip. Here's + See the instructions in readme.1st found from djdev205.zip. Here's a short summary, but you should still read readme.1st. C:\> mkdir DJGPP C:\> cd DJGPP - C:\DJGPP> c:\download\unzip32 c:\download\djdev204.zip - C:\DJGPP> c:\download\unzip32 c:\download\bnu219b.zip - C:\DJGPP> c:\download\unzip32 c:\download\gcc444b.zip - C:\DJGPP> c:\download\unzip32 c:\download\mak3791b.zip + C:\DJGPP> c:\download\unzip32 c:\download\djdev205.zip + C:\DJGPP> c:\download\unzip32 c:\download\bnu234b.zip + C:\DJGPP> c:\download\unzip32 c:\download\gcc920b.zip + C:\DJGPP> c:\download\unzip32 c:\download\mak43b.zip C:\DJGPP> c:\download\unzip32 c:\download\csdpmi7b.zip C:\DJGPP> set PATH=C:\DJGPP\BIN;%PATH% @@ -72,8 +70,9 @@ Building Once you have built XZ Utils, the resulting binaries can be run without long filename support. - Run "make" in this directory (the directory containing this README). - You should get xz.exe (and a bunch of temporary files). Other tools - are not built. Having e.g. xzdec.exe doesn't save much space compared - to xz.exe, because the DJGPP runtime makes the .exe quite big anyway. + Run "make" in this directory (the directory containing this + INSTALL.txt). You should get xz.exe (and a bunch of temporary files). + Other tools are not built. Having e.g. xzdec.exe doesn't save much + space compared to xz.exe because the DJGPP runtime makes the .exe + quite big anyway. -- cgit v1.2.3 From ceba0d25e826bcdbf64bb4cb03385a2a66f8cbcb Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 19:38:08 +0200 Subject: DOS: Update dos/Makefile for DJGPP 2.05. It doesn't need -fgnu89-inline like 2.04beta did. --- dos/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dos/Makefile b/dos/Makefile index 0ddb43c5..e42bdfba 100644 --- a/dos/Makefile +++ b/dos/Makefile @@ -18,9 +18,7 @@ CPPFLAGS = CFLAGS = -g -Wall -Wextra -Wfatal-errors -march=i386 -mtune=i686 -O2 LDFLAGS = -lemu -# NOTE: -fgnu89-inline is needed on DJGPP 2.04 beta and GCC >= 4.3.0 -# because time.h uses GNU-style "extern inline". -ALL_CFLAGS = -std=gnu99 -fgnu89-inline +ALL_CFLAGS = -std=gnu99 ALL_CPPFLAGS = \ -I. \ -- cgit v1.2.3 From 74a5af180a6a6c4b8c90cefb37ee900d3fea7dc6 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Mar 2020 21:15:35 +0200 Subject: xz: Never use thousand separators in DJGPP builds. DJGPP 2.05 added support for thousands separators but it's broken at least under WinXP with Finnish locale that uses a non-breaking space as the thousands separator. Workaround by disabling thousands separators for DJGPP builds. --- src/xz/util.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/xz/util.c b/src/xz/util.c index 39e8ec8b..a1339f4f 100644 --- a/src/xz/util.c +++ b/src/xz/util.c @@ -142,14 +142,24 @@ round_up_to_mib(uint64_t n) } -/// Check if thousand separator is supported. Run-time checking is easiest, -/// because it seems to be sometimes lacking even on POSIXish system. +/// Check if thousands separator is supported. Run-time checking is easiest +/// because it seems to be sometimes lacking even on a POSIXish system. +/// Note that trying to use thousands separators when snprintf() doesn't +/// support them results in undefined behavior. This just has happened to +/// work well enough in practice. +/// +/// 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. static void check_thousand_sep(uint32_t slot) { if (thousand == UNKNOWN) { bufs[slot][0] = '\0'; +#ifndef __DJGPP__ snprintf(bufs[slot], sizeof(bufs[slot]), "%'u", 1U); +#endif thousand = bufs[slot][0] == '1' ? WORKS : BROKEN; } -- cgit v1.2.3 From 2c3b1bb80a3ca7e09728fe4d7a1d8648a5cb9bca Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 15 Mar 2020 15:26:20 +0200 Subject: Build: Update m4/ax_pthread.m4 from Autoconf Archive (again). --- m4/ax_pthread.m4 | 219 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 117 insertions(+), 102 deletions(-) diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 index 0300e4ed..1598d077 100644 --- a/m4/ax_pthread.m4 +++ b/m4/ax_pthread.m4 @@ -55,6 +55,7 @@ # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2011 Daniel Richard G. +# Copyright (c) 2019 Marc Stevens # # 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 the @@ -82,7 +83,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 26 +#serial 27 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -123,10 +124,12 @@ fi # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" @@ -194,36 +197,10 @@ case $host_os in # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac -# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) - -AS_IF([test "x$GCC" = "xyes"], - [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) - -# The presence of a feature test macro requesting re-entrant function -# definitions is, on some systems, a strong hint that pthreads support is -# correctly enabled - -case $host_os in - darwin* | hpux* | linux* | osf* | solaris*) - ax_pthread_check_macro="_REENTRANT" - ;; - - aix*) - ax_pthread_check_macro="_THREAD_SAFE" - ;; - - *) - ax_pthread_check_macro="--" - ;; -esac -AS_IF([test "x$ax_pthread_check_macro" = "x--"], - [ax_pthread_check_cond=0], - [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) - # Are we compiling with Clang? AC_CACHE_CHECK([whether $CC is Clang], @@ -242,83 +219,47 @@ AC_CACHE_CHECK([whether $CC is Clang], ]) ax_pthread_clang="$ax_cv_PTHREAD_CLANG" -ax_pthread_clang_warning=no -# Clang needs special handling, because older versions handle the -pthread -# option in a rather... idiosyncratic way +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) -if test "x$ax_pthread_clang" = "xyes"; then +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC - # Clang takes -pthread; it has never supported any other flag +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) - # (Note 1: This will need to be revisited if a system that Clang - # supports has POSIX threads in a separate library. This tends not - # to be the way of modern systems, but it's conceivable.) +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first - # (Note 2: On some systems, notably Darwin, -pthread is not needed - # to get POSIX threads support; the API is always present and - # active. We could reasonably leave PTHREAD_CFLAGS empty. But - # -pthread does define _REENTRANT, and while the Darwin headers - # ignore this macro, third-party headers might not.) +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) - PTHREAD_CFLAGS="-pthread" - PTHREAD_LIBS= - ax_pthread_ok=yes +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled - # However, older versions of Clang make a point of warning the user - # that, in an invocation where only linking and no compilation is - # taking place, the -pthread option has no effect ("argument unused - # during compilation"). They expect -pthread to be passed in only - # when source code is being compiled. - # - # Problem is, this is at odds with the way Automake and most other - # C build frameworks function, which is that the same flags used in - # compilation (CFLAGS) are also used in linking. Many systems - # supported by AX_PTHREAD require exactly this for POSIX threads - # support, and in fact it is often not straightforward to specify a - # flag that is used only in the compilation phase and not in - # linking. Such a scenario is extremely rare in practice. - # - # Even though use of the -pthread flag in linking would only print - # a warning, this can be a nuisance for well-run software projects - # that build with -Werror. So if the active version of Clang has - # this misfeature, we search for an option to squash it. +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; - AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], - [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], - [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 - # (.c -> exe), because the warning occurs only in the second - # 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_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 - AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) - CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" - ac_link="$ax_pthread_save_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [ac_link="$ax_pthread_2step_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [break]) - ]) - done - ac_link="$ax_pthread_save_ac_link" - CFLAGS="$ax_pthread_save_CFLAGS" - AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - ]) + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; - case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in - no | unknown) ;; - *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; - esac + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) -fi # $ax_pthread_clang = yes if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do @@ -328,10 +269,10 @@ for ax_pthread_try_flag in $ax_pthread_flags; do AC_MSG_CHECKING([whether pthreads work without any flags]) ;; - -mt,pthread) - AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) - PTHREAD_CFLAGS="-mt" - PTHREAD_LIBS="-lpthread" + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) ;; -*) @@ -399,6 +340,80 @@ for ax_pthread_try_flag in $ax_pthread_flags; do done fi + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [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 + # (.c -> exe), because the warning occurs only in the second + # 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_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 + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" -- cgit v1.2.3 From 69d694e5f1beae2bbfa3b6c348ec0ec5f14b5cd0 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 15 Mar 2020 15:27:22 +0200 Subject: Update INSTALL for Windows and DOS and add preliminary info for z/OS. --- INSTALL | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/INSTALL b/INSTALL index e0df3f4a..a55affb0 100644 --- a/INSTALL +++ b/INSTALL @@ -14,6 +14,7 @@ XZ Utils Installation 1.2.6. Tru64 1.2.7. Windows 1.2.8. DOS + 1.2.9. z/OS 1.3. Adding support for new platforms 2. configure options 2.1. Static vs. dynamic linking of liblzma @@ -139,8 +140,22 @@ XZ Utils Installation 1.2.7. Windows - Building XZ Utils on Windows is supported under the following - environments: + 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 are Visual Studio project files under the "windows" + directory. See windows/INSTALL-MSVC.txt. In the future the + project files will be removed when CMake support is good + enough. Thus, please test the CMake version and help fix + possible issues. + + To build also the command line tools: - MinGW-w64 + MSYS (32-bit and 64-bit x86): This is used for building the official binary packages for Windows. @@ -156,9 +171,6 @@ XZ Utils Installation which is safe under older Cygwin versions. You can check the Cygwin version with the command "cygcheck -V". - - Microsoft Visual Studio 2013 update 2 or later (MSVC for short): - See windows/INSTALL-MSVC.txt for more information. - It may be possible to build liblzma with other toolchains too, but that will probably require writing a separate makefile. Building the command line tools with non-GNU toolchains will be harder than @@ -171,12 +183,31 @@ XZ Utils Installation 1.2.8. DOS - There is an experimental Makefile in the "dos" directory to build - XZ Utils on DOS using DJGPP. Support for long file names (LFN) is - needed. See dos/README for more information. + There is a Makefile in the "dos" directory to build XZ Utils on + DOS using DJGPP. Support for long file names (LFN) is needed at + build time but the resulting xz.exe works without LFN support too. + See dos/INSTALL.txt and dos/README.txt for more information. + - GNU Autotools based build hasn't been tried on DOS. If you try, I - would like to hear if it worked. +1.2.9. z/OS + + To build XZ Utils on z/OS UNIX System Services using xlc, pass + these options to the configure script: CC='xlc -qhaltonmsg=CCN3296' + CPPFLAS='-D_UNIX03_THREADS -D_XOPEN_SOURCE=600'. The first makes + xlc throw an error if a header file is missing, which is required + to make the tests in configure work. The CPPFLAGS are needed to + get pthread support (some other CPPFLAGS may work too; if there + are problems, try -D_UNIX95_THREADS instead of -D_UNIX03_THREADS). + + test_scripts.sh in "make check" will fail even if the scripts + actually work because the test data includes compressed files + with US-ASCII text. + + No other tests should fail. If test_files.sh fails, check that + the included .xz test files weren't affected by EBCDIC conversion. + + XZ Utils doesn't have code to detect the amount of physical RAM and + number of CPU cores on z/OS. 1.3. Adding support for new platforms -- cgit v1.2.3 From 51cd5d051fc730d61411dee292e863582784e189 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 16:43:29 +0200 Subject: Update INSTALL.generic from Automake 1.16.1. --- INSTALL.generic | 321 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 162 insertions(+), 159 deletions(-) diff --git a/INSTALL.generic b/INSTALL.generic index 81fd332c..8865734f 100644 --- a/INSTALL.generic +++ b/INSTALL.generic @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -12,97 +12,96 @@ without warranty of any kind. Basic Installation ================== - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented +'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you +some point 'config.cache' contains results you don't want to keep, you may remove or edit it. - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. The simplest way to compile this package is: - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. - Running `configure' might take a while. While running, it prints + Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. - 2. Type `make' to compile the package. + 2. Type 'make' to compile the package. - 3. Optionally, type `make check' to run any self-tests that come with + 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. - 4. Type `make install' to install the programs and any data files and + 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root + user, and only the 'make install' phase executed with root privileges. - 5. Optionally, type `make installcheck' to repeat any self-tests, but + 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required + regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. - 7. Often, you can also type `make uninstall' to remove the installed + 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. - 8. Some packages, particularly those that use Automake, provide `make + 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. + targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' +the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix @@ -113,21 +112,21 @@ Compiling For Multiple Architectures You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the +own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before +installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ @@ -136,100 +135,104 @@ this: This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. +using the 'lipo' tool if you have problems. Installation Names ================== - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or +correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without +'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, `make install +affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the package recognizes. - For packages that use the X Window System, `configure' can usually + For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure +execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure +overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. +overridden with 'make V=0'. Particular systems ================== - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try ./configure CC="cc" @@ -237,26 +240,26 @@ and if that doesn't work, try ./configure CC="cc -nodtk" - On Solaris, don't put `/usr/ucb' early in your `PATH'. This + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== - There may be some features `configure' cannot figure out + There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints +_same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM @@ -265,101 +268,101 @@ where SYSTEM can have one of these forms: OS KERNEL-OS - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will +use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. +eventually be run) with '--host=TYPE'. Sharing Defaults ================ - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run +environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: +them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc -causes the specified `gcc' to be used as the C compiler (unless it is +causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash -`configure' Invocation +'configure' Invocation ====================== - `configure' recognizes the following options to control how it + 'configure' recognizes the following options to control how it operates. -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. -`--help=short' -`--help=recursive' +'--help=short' +'--help=recursive' Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' script, and exit. -`--cache-file=FILE' +'--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to + traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. -`--quiet' -`--silent' -`-q' +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error + suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). -`--srcdir=DIR' +'--srcdir=DIR' Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. -`--no-create' -`-n' +'--no-create' +'-n' Run the configure checks, but stop before creating any output files. -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. -- cgit v1.2.3 From ca261994edc3f2d03d5589c037171c63471ee9dc Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 17:30:39 +0200 Subject: Translations: Add partial Danish translation. I made a few minor white space changes without getting them approved by the Danish translation team. --- po/LINGUAS | 1 + po/da.po | 896 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 897 insertions(+) create mode 100644 po/da.po diff --git a/po/LINGUAS b/po/LINGUAS index 1acd165a..5297781c 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,4 +1,5 @@ cs +da de fi fr diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..650e36c3 --- /dev/null +++ b/po/da.po @@ -0,0 +1,896 @@ +# Danish translation xz. +# This file is put in the public domain. +# Joe Hansen , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: xz 5.2.4\n" +"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" +"POT-Creation-Date: 2018-04-29 18:19+0300\n" +"PO-Revision-Date: 2019-03-04 23:08+0100\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"X-Bugs: Report translation errors to the Language-Team address.\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" + +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "%s: Ugyldigt parameter til --block-list" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "%s: For mange argumenter til --block-list" + +#: src/xz/args.c:102 +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 +#, c-format +msgid "%s: Unknown file format type" +msgstr "%s: Ukendt filformattype" + +#: src/xz/args.c:429 src/xz/args.c:437 +#, c-format +msgid "%s: Unsupported integrity check type" +msgstr "%s: Typen for integritetkontrol er ikke understøttet" + +#: src/xz/args.c:473 +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 +#, c-format +msgid "The environment variable %s contains too many arguments" +msgstr "Miljøvariablen %s indeholder for mange argumenter" + +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "Komprimeringsunderstøttelse blev deaktiveret på byggetidspunktet" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "Dekomprimeringsunderstøttelse blev deaktiveret på byggetidspunktet" + +#: src/xz/coder.c:110 +msgid "Maximum number of filters is four" +msgstr "Maksimalt antal filtre er fire" + +#: src/xz/coder.c:129 +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 +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 +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 +msgid "The .lzma format supports only the LZMA1 filter" +msgstr "Formatet .lzma understøtter kun LZMA1-filteret" + +#: src/xz/coder.c:192 +msgid "LZMA1 cannot be used with the .xz format" +msgstr "LZMA1 kan ikke bruges med .xz-formatet" + +#: src/xz/coder.c:209 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "Filterkæden er ikke kompatibel med --flush-timeout" + +#: src/xz/coder.c:215 +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 +#, c-format +msgid "Using up to % threads." +msgstr "Bruger op til % tråde." + +#: src/xz/coder.c:251 +msgid "Unsupported filter chain or filter options" +msgstr "Filterkæde eller filterindstillinger er ikke understøttet" + +#: src/xz/coder.c:263 +#, c-format +msgid "Decompression will need %s MiB of memory." +msgstr "Dekomprimering vil kræve %s MiB hukommelse." + +#: src/xz/coder.c:300 +#, c-format +msgid "Adjusted 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:354 +#, 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" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "Det opstod en fejl under oprettelse af en datakanal: %s" + +#: src/xz/file_io.c:173 +msgid "Sandbox is disabled due to incompatible command line arguments" +msgstr "Sandkassen er deaktiveret på grund af inkompatible kommandolinjeargumenter" + +#: src/xz/file_io.c:216 +msgid "Sandbox was successfully enabled" +msgstr "Sandkassen blev aktiveret" + +#: src/xz/file_io.c:220 +msgid "Failed to enable the sandbox" +msgstr "Kunne ikke aktivere sandkassen" + +#: src/xz/file_io.c:262 +#, c-format +msgid "%s: poll() failed: %s" +msgstr "%s: poll() mislykkedes: %s" + +#. TRANSLATORS: When compression or decompression finishes, +#. and xz is going to remove the source file, xz first checks +#. if the source file still exists, and if it does, does its +#. device and inode numbers match what xz saw when it opened +#. the source file. If these checks fail, this message is +#. shown, %s being the filename, and the file is not deleted. +#. The check for device and inode numbers is there, because +#. 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:332 +#, 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:339 src/xz/file_io.c:878 +#, c-format +msgid "%s: Cannot remove: %s" +msgstr "%s: Kan ikke fjerne: %s" + +#: src/xz/file_io.c:364 +#, c-format +msgid "%s: Cannot set the file owner: %s" +msgstr "%s: Kan ikke angive filejeren: %s" + +#: src/xz/file_io.c:370 +#, c-format +msgid "%s: Cannot set the file group: %s" +msgstr "%s: Kan ikke angive filgruppen: %s" + +#: src/xz/file_io.c:389 +#, c-format +msgid "%s: Cannot set the file permissions: %s" +msgstr "%s: Kan ikke angive filtilladelser: %s" + +#: src/xz/file_io.c:515 +#, 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:572 src/xz/file_io.c:634 +#, c-format +msgid "%s: Is a symbolic link, skipping" +msgstr "%s: Er en symbolsk henvisning, udelader" + +#: src/xz/file_io.c:663 +#, c-format +msgid "%s: Is a directory, skipping" +msgstr "%s: Er en mappe, udelader" + +#: src/xz/file_io.c:669 +#, c-format +msgid "%s: Not a regular file, skipping" +msgstr "%s: Er ikke en normal fil, udelader" + +#: src/xz/file_io.c:686 +#, 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:693 +#, c-format +msgid "%s: File has sticky bit set, skipping" +msgstr "%s: Fil har klæbende bitsæt, udelader" + +#: src/xz/file_io.c:700 +#, 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:788 +#, 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:836 +#, 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:1014 +#, 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:1026 +#, c-format +msgid "%s: Closing the file failed: %s" +msgstr "%s: Lukning af filen fejlede: %s" + +#: src/xz/file_io.c:1062 src/xz/file_io.c:1288 +#, 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:1157 +#, c-format +msgid "%s: Read error: %s" +msgstr "%s: Læsefejl: %s" + +#: src/xz/file_io.c:1177 +#, 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:1187 +#, c-format +msgid "%s: Unexpected end of file" +msgstr "%s: Uventet filafslutning" + +#: src/xz/file_io.c:1246 +#, c-format +msgid "%s: Write error: %s" +msgstr "%s: Skrivefejl: %s" + +#: src/xz/hardware.c:107 +msgid "Disabled" +msgstr "Deaktiveret" + +#. TRANSLATORS: Test with "xz --info-memory" to see if +#. the alignment looks nice. +#: src/xz/hardware.c:126 +msgid "Total amount of physical memory (RAM): " +msgstr "Samlet mængde fysisk hukommelse (RAM): " + +#: src/xz/hardware.c:128 +msgid "Memory usage limit for compression: " +msgstr "Grænse for hukommelsesforbrug til komprimering: " + +#: src/xz/hardware.c:130 +msgid "Memory usage limit for decompression: " +msgstr "Grænse for hukommelsesforbug til dekomprimering: " + +#. 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" +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 +msgid "Unknown-2" +msgstr "Ukendt-2" + +#: src/xz/list.c:73 +msgid "Unknown-3" +msgstr "Ukendt-3" + +#: src/xz/list.c:75 +msgid "Unknown-5" +msgstr "Ukendt-5" + +#: src/xz/list.c:76 +msgid "Unknown-6" +msgstr "Ukendt-6" + +#: src/xz/list.c:77 +msgid "Unknown-7" +msgstr "Ukendt-7" + +#: src/xz/list.c:78 +msgid "Unknown-8" +msgstr "Ukendt-8" + +#: src/xz/list.c:79 +msgid "Unknown-9" +msgstr "Ukendt-9" + +#: src/xz/list.c:81 +msgid "Unknown-11" +msgstr "Ukendt-11" + +#: src/xz/list.c:82 +msgid "Unknown-12" +msgstr "Ukendt-12" + +#: src/xz/list.c:83 +msgid "Unknown-13" +msgstr "Ukendt-13" + +#: src/xz/list.c:84 +msgid "Unknown-14" +msgstr "Ukendt-14" + +#: src/xz/list.c:85 +msgid "Unknown-15" +msgstr "Ukendt-15" + +#: src/xz/list.c:153 +#, c-format +msgid "%s: File is empty" +msgstr "%s: Filen er tom" + +#: src/xz/list.c:158 +#, c-format +msgid "%s: Too small to be a valid .xz file" +msgstr "%s: For lille til at være en gyldig .xz-fil" + +#. 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" +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 +msgid "Yes" +msgstr "Ja" + +#: src/xz/list.c:906 src/xz/list.c:1081 +msgid "No" +msgstr "Nej" + +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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 +#, 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 +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 +msgid "--list works only on .xz files (--format=xz or --format=auto)" +msgstr "" + +#: src/xz/list.c:1152 +msgid "--list does not support reading from standard input" +msgstr "--list understøtter ikke læsning fra standardind" + +#: src/xz/main.c:89 +#, c-format +msgid "%s: Error reading filenames: %s" +msgstr "%s: Der opstod en fejl under forsøg på læsning af filnavne: %s" + +#: src/xz/main.c:96 +#, c-format +msgid "%s: Unexpected end of input when reading filenames" +msgstr "%s: Uventet afslutning på inddata under forsøg på læsning af filnavne" + +#: src/xz/main.c:120 +#, c-format +msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" +msgstr "" + +#: src/xz/main.c:174 +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 +msgid "Cannot read data from standard input when reading filenames from standard input" +msgstr "" + +#. TRANSLATORS: This is the program name in the beginning +#. 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:714 +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/xz/message.c:777 src/xz/message.c:827 +msgid "Internal error (bug)" +msgstr "Intern fejl (fejl)" + +#: src/xz/message.c:784 +msgid "Cannot establish signal handlers" +msgstr "Kan ikke etbalere signalhåndteringer" + +#: src/xz/message.c:793 +msgid "No integrity check; not verifying file integrity" +msgstr "Ingen integritetkontrol; verificerer ikke filintegritet" + +#: src/xz/message.c:796 +msgid "Unsupported type of integrity check; not verifying file integrity" +msgstr "" + +#: src/xz/message.c:803 +msgid "Memory usage limit reached" +msgstr "Begrænsning på brug af hukommelse er nået" + +#: src/xz/message.c:806 +msgid "File format not recognized" +msgstr "Filformatet blev ikke genkendt" + +#: src/xz/message.c:809 +msgid "Unsupported options" +msgstr "Tilvalg er ikke understøttede" + +#: src/xz/message.c:812 +msgid "Compressed data is corrupt" +msgstr "Komprimerede data er ødelagte" + +#: src/xz/message.c:815 +msgid "Unexpected end of input" +msgstr "Uventet afslutning på inddata" + +#: src/xz/message.c:848 +#, 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:876 +#, 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:1043 +#, c-format +msgid "%s: Filter chain: %s\n" +msgstr "%s: Filterkæde: %s\n" + +#: src/xz/message.c:1053 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Prøv »%s --help« for yderligere information." + +#: src/xz/message.c:1079 +#, c-format +msgid "" +"Usage: %s [OPTION]... [FILE]...\n" +"Compress or decompress FILEs in the .xz format.\n" +"\n" +msgstr "" + +#: src/xz/message.c:1086 +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:1090 +msgid " Operation mode:\n" +msgstr " Operationstilstand:\n" + +#: src/xz/message.c:1093 +msgid "" +" -z, --compress force compression\n" +" -d, --decompress force decompression\n" +" -t, --test test compressed file integrity\n" +" -l, --list list information about .xz files" +msgstr "" + +#: src/xz/message.c:1099 +msgid "" +"\n" +" Operation modifiers:\n" +msgstr "" +"\n" +"Operationsændrere:\n" + +#: src/xz/message.c:1102 +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:1108 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" + +#: src/xz/message.c:1111 +msgid "" +" --no-sparse do not create sparse files when decompressing\n" +" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" +" --files[=FILE] read filenames to process from FILE; if FILE is\n" +" omitted, filenames are read from the standard input;\n" +" filenames must be terminated with the newline character\n" +" --files0[=FILE] like --files but use the null character as terminator" +msgstr "" + +#: src/xz/message.c:1120 +msgid "" +"\n" +" Basic file format and compression options:\n" +msgstr "" + +#: src/xz/message.c:1122 +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'" +msgstr "" + +#: src/xz/message.c:1127 +msgid " --ignore-check don't verify the integrity check when decompressing" +msgstr "" + +#: src/xz/message.c:1131 +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:1135 +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:1139 +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:1144 +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:1148 +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:1152 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" + +#: src/xz/message.c:1158 +#, 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" +msgstr "" + +#: src/xz/message.c:1165 +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:1171 +msgid "" +"\n" +" Custom filter chain for compression (alternative for using presets):" +msgstr "" + +#: src/xz/message.c:1180 +msgid "" +"\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" +" preset=PRE reset options to a preset (0-9[e])\n" +" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" +" lc=NUM number of literal context bits (0-4; 3)\n" +" lp=NUM number of literal position bits (0-4; 0)\n" +" pb=NUM number of position bits (0-4; 2)\n" +" mode=MODE compression mode (fast, normal; normal)\n" +" nice=NUM nice length of a match (2-273; 64)\n" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" +msgstr "" + +#: src/xz/message.c:1195 +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)" +msgstr "" + +#: src/xz/message.c:1207 +msgid "" +"\n" +" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" +" dist=NUM distance between bytes being subtracted\n" +" from each other (1-256; 1)" +msgstr "" + +#: src/xz/message.c:1215 +msgid "" +"\n" +" Other options:\n" +msgstr "" +"\n" +"Andre tilvalg:\n" + +#: src/xz/message.c:1218 +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:1223 +msgid " -Q, --no-warn make warnings not affect the exit status" +msgstr "" + +#: src/xz/message.c:1225 +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:1228 +msgid "" +" --info-memory display the total amount of RAM and the currently active\n" +" memory usage limits, and exit" +msgstr "" + +#: src/xz/message.c:1231 +msgid "" +" -h, --help display the short help (lists only the basic options)\n" +" -H, --long-help display this long help and exit" +msgstr "" +" -h, --help vis den korte hjælpetekst (viser kun grundlæggende\n" +" tilvalg)\n" +" -H, --long-help vis den lange hjælpetekst og afslut" + +#: src/xz/message.c:1235 +msgid "" +" -h, --help display this short help and exit\n" +" -H, --long-help display the long help (lists also the advanced options)" +msgstr "" +" -h, --help vis den korte hjælpetekst og afslut\n" +" -H, --long-help vis den lange hjælpetekst (viser også de avancerede\n" +" tilvalg)" + +#: src/xz/message.c:1240 +msgid " -V, --version display the version number and exit" +msgstr " -V, --version vis versionsnummer og afslut" + +#: src/xz/message.c:1242 +msgid "" +"\n" +"With no FILE, or when FILE is -, read standard input.\n" +msgstr "" +"\n" +"Med ingen FIL, eller når FIL er -, læs standardind.\n" + +#. TRANSLATORS: This message indicates the bug reporting address +#. 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:1248 +#, 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 .\n" + +#: src/xz/message.c:1250 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s hjemmeside: <%s>\n" + +#: src/xz/message.c:1254 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "DETTE ER EN UDVIKLINGSVERSION - BRUG IKKE I PRODUKTION." + +#: src/xz/options.c:86 +#, c-format +msgid "%s: Options must be `name=value' pairs separated with commas" +msgstr "%s: Tilvalg skal være »navne=værdi«-par adskilt med kommaer" + +#: src/xz/options.c:93 +#, c-format +msgid "%s: Invalid option name" +msgstr "%s: Ugyldigt tilvalgsnavn" + +#: src/xz/options.c:113 +#, c-format +msgid "%s: Invalid option value" +msgstr "%s: Ugyldigt tilvalgsværdi" + +#: src/xz/options.c:247 +#, c-format +msgid "Unsupported LZMA1/LZMA2 preset: %s" +msgstr "LZMA1/LZMA2-forhåndskonfiguration er ikke understøttet: %s" + +#: src/xz/options.c:355 +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 +#, c-format +msgid "The selected match finder requires at least nice=%" +msgstr "Den valgte matchfinder kræver mindst nice=%" + +#: 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 +#, c-format +msgid "%s: File already has `%s' suffix, skipping" +msgstr "%s: Filen har allrede endelsen »%s«, udelader." + +#: src/xz/suffix.c:393 +#, c-format +msgid "%s: Invalid filename suffix" +msgstr "%s: Ugyldig filnavnendelse" + +#: src/xz/util.c:71 +#, c-format +msgid "%s: Value is not a non-negative decimal integer" +msgstr "%s: Værdi er ikke et positivt decimalheltal" + +#: src/xz/util.c:113 +#, c-format +msgid "%s: Invalid multiplier suffix" +msgstr "%s: Ugyldig multiplikatorendelse" + +#: src/xz/util.c:115 +msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." +msgstr "Gyldige endelser er »KiB« (2^10), »MiB« (2^20) og »GiB« (2^30)." + +#: src/xz/util.c:132 +#, c-format +msgid "Value of the option `%s' must be in the range [%, %]" +msgstr "Værdien for tilvalget »%s« skal være i intervallet [%, %]" + +#: src/xz/util.c:257 +msgid "Empty filename, skipping" +msgstr "Tomt filnavn, udelader" + +#: src/xz/util.c:271 +msgid "Compressed data cannot be read from a terminal" +msgstr "Komprimerede data kan ikke læses fra en terminal" + +#: src/xz/util.c:284 +msgid "Compressed data cannot be written to a terminal" +msgstr "Komprimerede data kan ikke skrives til en terminal" + +#: src/common/tuklib_exit.c:39 +msgid "Writing to standard output failed" +msgstr "Skrivning til standardud mislykkedes" + +#: src/common/tuklib_exit.c:42 +msgid "Unknown error" +msgstr "Ukendt fejl" -- cgit v1.2.3 From cc163574249f6a4a66f3dc09d6fe5a71bee24fab Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 19:39:45 +0200 Subject: README: Mention that man pages can be translated. --- README | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README b/README index 0676f6ad..39267967 100644 --- a/README +++ b/README @@ -9,7 +9,7 @@ XZ Utils 1.3. Documentation for liblzma 2. Version numbering 3. Reporting bugs - 4. Translating the xz tool + 4. Translations 5. Other implementations of the .xz format 6. Contact information @@ -192,9 +192,10 @@ XZ Utils system. -4. Translating the xz tool --------------------------- +4. Translations +--------------- + The xz command line tool and all man pages can be translated. The translations are handled via the Translation Project. If you wish to help translating xz, please join the Translation Project: -- cgit v1.2.3 From 9cc0901798217e258e91c13cf6fda7ad42ba108c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 19:46:27 +0200 Subject: README: Mention that translatable strings will change after 5.2.x. --- README | 74 +++--------------------------------------------------------------- 1 file changed, 3 insertions(+), 71 deletions(-) diff --git a/README b/README index 39267967..a37857bc 100644 --- a/README +++ b/README @@ -201,77 +201,9 @@ XZ Utils https://translationproject.org/html/translators.html - 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 - # - 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! + 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. 5. Other implementations of the .xz format -- cgit v1.2.3 From 3a6f38309dc5d44d8a63ebb337b6b2028561c93e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 20:01:37 +0200 Subject: README: Update outdated sections. --- README | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README b/README index a37857bc..3f0c38dc 100644 --- a/README +++ b/README @@ -55,9 +55,11 @@ XZ Utils Similarly, it is possible that some day there is a filter that will compress better than LZMA2. - XZ Utils doesn't support multithreaded compression or decompression - yet. It has been planned though and taken into account when designing - the .xz file format. + XZ Utils supports multithreaded compression. XZ Utils doesn't support + multithreaded decompression yet. It has been planned though and taken + into account when designing the .xz file format. In the future, files + that were created in threaded mode can be decompressed in threaded + mode too. 1. Documentation @@ -103,14 +105,13 @@ XZ Utils and data type as Doxygen tags. These docs should be quite OK as a quick reference. - I have planned to write a bunch of very well documented example - programs, which (due to comments) should work as a tutorial to - various features of liblzma. No such example programs have been - written yet. + There are a few example/tutorial programs that should help in + getting started with liblzma. In the source package the examples + are in "doc/examples" and in binary packages they may be under + "examples" in the same directory as this README. - For now, if you have never used liblzma, libbzip2, or zlib, I - recommend learning the *basics* of the zlib API. Once you know that, - it should be easier to learn liblzma. + 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 -- cgit v1.2.3 From ab3e57539c7337f0653b13b75dbc5d03ade9700e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 16 Mar 2020 21:57:21 +0200 Subject: Translations: Rebuild cs.po to avoid incorrect fuzzy strings. "make dist" updates the .po files and the fuzzy strings would result in multiple very wrong translations. --- po/cs.po | 592 ++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 322 insertions(+), 270 deletions(-) diff --git a/po/cs.po b/po/cs.po index a7041ec6..7672d788 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: xz-utils\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" -"POT-Creation-Date: 2010-12-03 11:25+0100\n" +"POT-Creation-Date: 2020-03-16 21:46+0200\n" "PO-Revision-Date: 2010-12-03 11:32+0100\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" @@ -18,68 +18,116 @@ msgstr "" "X-Poedit-Language: Czech\n" "X-Poedit-SourceCharset: utf-8\n" -#: src/xz/args.c:333 +#: src/xz/args.c:63 +#, c-format +msgid "%s: Invalid argument to --block-list" +msgstr "" + +#: src/xz/args.c:73 +#, c-format +msgid "%s: Too many arguments to --block-list" +msgstr "" + +#: src/xz/args.c:102 +msgid "0 can only be used as the last element in --block-list" +msgstr "" + +#: src/xz/args.c:406 #, c-format msgid "%s: Unknown file format type" msgstr "%s: Neznámý typ formátu souboru" -#: src/xz/args.c:356 src/xz/args.c:364 +#: src/xz/args.c:429 src/xz/args.c:437 #, c-format msgid "%s: Unsupported integrity check type" msgstr "%s: Neznámý typ kontroly integrity" -#: src/xz/args.c:382 +#: src/xz/args.c:473 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" +msgstr "Spolu s přepínači „--files“ nebo „--files0“ může být zadán pouze jeden soubor" -#: src/xz/args.c:445 +#: src/xz/args.c:541 #, c-format msgid "The environment variable %s contains too many arguments" msgstr "Proměnná prostředí %s obsahuje příliš mnoho argumentů" -#: src/xz/coder.c:95 +#: src/xz/args.c:643 +msgid "Compression support was disabled at build time" +msgstr "" + +#: src/xz/args.c:650 +msgid "Decompression support was disabled at build time" +msgstr "" + +#: src/xz/coder.c:110 msgid "Maximum number of filters is four" msgstr "Maximální počet filtrů je čtyři" -#: src/xz/coder.c:108 +#: src/xz/coder.c:129 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:129 +#: src/xz/coder.c:159 msgid "Using a preset in raw mode is discouraged." msgstr "Použití přednastavení v režimu raw je nevhodné." -#: src/xz/coder.c:131 +#: src/xz/coder.c:161 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." +msgstr "Přesné volby u přednastavení se mohou lišit mezi různými verzemi softwaru." -#: src/xz/coder.c:157 +#: src/xz/coder.c:184 msgid "The .lzma format supports only the LZMA1 filter" msgstr "Formát .lzma podporuje pouze filtr LZMA1" -#: src/xz/coder.c:165 +#: src/xz/coder.c:192 msgid "LZMA1 cannot be used with the .xz format" msgstr "LZMA1 nelze použít s formátem .xz" -#: src/xz/coder.c:182 +#: src/xz/coder.c:209 +msgid "The filter chain is incompatible with --flush-timeout" +msgstr "" + +#: src/xz/coder.c:215 +msgid "Switching to single-threaded mode due to --flush-timeout" +msgstr "" + +#: src/xz/coder.c:235 +#, c-format +msgid "Using up to % threads." +msgstr "" + +#: src/xz/coder.c:251 msgid "Unsupported filter chain or filter options" msgstr "Nepodporovaný omezující filtr nebo volby filtru" -#: src/xz/coder.c:190 +#: src/xz/coder.c:263 #, c-format msgid "Decompression will need %s MiB of memory." msgstr "Dekomprimace bude vyžadovat %s MiB paměti." -#: src/xz/coder.c:247 +#: src/xz/coder.c:300 #, 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 "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" +msgstr "" + +#: src/xz/coder.c:354 +#, 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" + +#: src/xz/file_io.c:110 src/xz/file_io.c:118 +#, c-format +msgid "Error creating a pipe: %s" +msgstr "" + +#: src/xz/file_io.c:224 +msgid "Failed to enable the sandbox" +msgstr "" + +#: src/xz/file_io.c:266 +#, c-format +msgid "%s: poll() failed: %s" 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" #. TRANSLATORS: When compression or decompression finishes, #. and xz is going to remove the source file, xz first checks @@ -91,119 +139,133 @@ msgstr "" #. 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:137 +#: src/xz/file_io.c:333 #, 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:144 src/xz/file_io.c:590 +#: src/xz/file_io.c:340 src/xz/file_io.c:882 #, c-format msgid "%s: Cannot remove: %s" msgstr "%s: Nelze odstranit: %s" -#: src/xz/file_io.c:169 +#: src/xz/file_io.c:366 #, c-format msgid "%s: Cannot set the file owner: %s" msgstr "%s: Nelze nastavit vlastníka souboru: %s" -#: src/xz/file_io.c:175 +#: src/xz/file_io.c:372 #, c-format msgid "%s: Cannot set the file group: %s" msgstr "%s: Nelze nastavit skupinu souboru: %s" -#: src/xz/file_io.c:194 +#: src/xz/file_io.c:391 #, c-format msgid "%s: Cannot set the file permissions: %s" msgstr "%s: Nelze nastavit oprávnění souboru: %s" -#: src/xz/file_io.c:337 src/xz/file_io.c:420 +#: src/xz/file_io.c:517 +#, 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 #, c-format msgid "%s: Is a symbolic link, skipping" msgstr "%s: Jedná se o symbolický odkaz, vynechává se" -#: src/xz/file_io.c:455 +#: src/xz/file_io.c:665 #, c-format msgid "%s: Is a directory, skipping" msgstr "%s: Jedná se o složku, vynechává se" -#: src/xz/file_io.c:462 +#: src/xz/file_io.c:671 #, 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:479 +#: src/xz/file_io.c:688 #, 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:486 +#: src/xz/file_io.c:695 #, 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:493 +#: src/xz/file_io.c:702 #, 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:714 +#: src/xz/file_io.c:792 +#, c-format +msgid "Error restoring the status flags to standard input: %s" +msgstr "" + +#: src/xz/file_io.c:840 +#, c-format +msgid "Error getting the file status flags from standard output: %s" +msgstr "" + +#: src/xz/file_io.c:1018 #, 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:726 +#: src/xz/file_io.c:1030 #, c-format msgid "%s: Closing the file failed: %s" msgstr "%s: Selhalo zavření souboru: %s" -#: src/xz/file_io.c:762 src/xz/file_io.c:946 +#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 #, 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" +msgstr "%s: Selhalo nastavení pozice při pokusu o vytvoření souboru řídké matice: %s" -#: src/xz/file_io.c:821 +#: src/xz/file_io.c:1167 #, c-format msgid "%s: Read error: %s" msgstr "%s: Chyba čtení: %s" -#: src/xz/file_io.c:844 +#: src/xz/file_io.c:1191 #, 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:854 +#: src/xz/file_io.c:1201 #, c-format msgid "%s: Unexpected end of file" msgstr "%s: Neočekávaný konec souboru" -#: src/xz/file_io.c:904 +#: src/xz/file_io.c:1260 #, c-format msgid "%s: Write error: %s" msgstr "%s: Chyba zápisu: %s" -#: src/xz/hardware.c:100 +#: src/xz/hardware.c:137 msgid "Disabled" msgstr "Vypnuto" #. TRANSLATORS: Test with "xz --info-memory" to see if #. the alignment looks nice. -#: src/xz/hardware.c:119 +#: src/xz/hardware.c:156 msgid "Total amount of physical memory (RAM): " msgstr "Celkové množství fyzické paměti (RAM): " -#: src/xz/hardware.c:121 +#: src/xz/hardware.c:158 msgid "Memory usage limit for compression: " msgstr "Omezení použitelné paměti pro komprimaci: " -#: src/xz/hardware.c:123 +#: src/xz/hardware.c:160 msgid "Memory usage limit for decompression: " msgstr "Omezení použitelné paměti pro dekomprimaci:" #. 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:62 +#: src/xz/list.c:65 msgid "None" msgstr "žádná" @@ -212,60 +274,60 @@ msgstr "žádná" #. 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:69 +#: src/xz/list.c:72 msgid "Unknown-2" msgstr "neznámá-2" -#: src/xz/list.c:70 +#: src/xz/list.c:73 msgid "Unknown-3" msgstr "neznámá-3" -#: src/xz/list.c:72 +#: src/xz/list.c:75 msgid "Unknown-5" msgstr "neznámá-5" -#: src/xz/list.c:73 +#: src/xz/list.c:76 msgid "Unknown-6" msgstr "neznámá-6" -#: src/xz/list.c:74 +#: src/xz/list.c:77 msgid "Unknown-7" msgstr "neznámá-7" -#: src/xz/list.c:75 +#: src/xz/list.c:78 msgid "Unknown-8" msgstr "neznámá-8" -#: src/xz/list.c:76 +#: src/xz/list.c:79 msgid "Unknown-9" msgstr "neznámá-9" -#: src/xz/list.c:78 +#: src/xz/list.c:81 msgid "Unknown-11" msgstr "neznámá-11" -#: src/xz/list.c:79 +#: src/xz/list.c:82 msgid "Unknown-12" msgstr "neznámá-12" -#: src/xz/list.c:80 +#: src/xz/list.c:83 msgid "Unknown-13" msgstr "neznámá-13" -#: src/xz/list.c:81 +#: src/xz/list.c:84 msgid "Unknown-14" msgstr "neznámá-14" -#: src/xz/list.c:82 +#: src/xz/list.c:85 msgid "Unknown-15" msgstr "neznámá-15" -#: src/xz/list.c:126 +#: src/xz/list.c:153 #, c-format msgid "%s: File is empty" msgstr "%s: Soubor je prázdný" -#: src/xz/list.c:131 +#: src/xz/list.c:158 #, 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" @@ -274,41 +336,41 @@ msgstr "%s: Je příliš malý na to, aby to mohl být platný soubor .xz" #. 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:612 +#: src/xz/list.c:677 msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" msgstr "Proud Bloky Komprim Nekomprim Poměr Kontrl Název souboru" -#: src/xz/list.c:652 +#: src/xz/list.c:717 #, c-format msgid " Streams: %s\n" msgstr " Proudů: %s\n" -#: src/xz/list.c:654 +#: src/xz/list.c:719 #, c-format msgid " Blocks: %s\n" msgstr " Bloků: %s\n" -#: src/xz/list.c:656 +#: src/xz/list.c:721 #, c-format msgid " Compressed size: %s\n" msgstr " Komprimovaná velikost: %s\n" -#: src/xz/list.c:659 +#: src/xz/list.c:724 #, c-format msgid " Uncompressed size: %s\n" msgstr " Nekomprimovaná velikost: %s\n" -#: src/xz/list.c:662 +#: src/xz/list.c:727 #, c-format msgid " Ratio: %s\n" msgstr " Poměr komprimace: %s\n" -#: src/xz/list.c:664 +#: src/xz/list.c:729 #, c-format msgid " Check: %s\n" msgstr " Typ kontroly: %s\n" -#: src/xz/list.c:665 +#: src/xz/list.c:730 #, c-format msgid " Stream padding: %s\n" msgstr " Zarovnání proudu: %s\n" @@ -316,28 +378,24 @@ 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:693 +#: src/xz/list.c:758 msgid "" " Streams:\n" -" Stream Blocks CompOffset UncompOffset CompSize " -"UncompSize Ratio Check Padding" +" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" msgstr "" " Proudy:\n" -" Proud Bloky KomprPozice NekomprPozice KomprVelikost " -"NekomprVelikost Poměr Kontrola Zarovná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:748 +#: src/xz/list.c:813 #, c-format msgid "" " Blocks:\n" -" Stream Block CompOffset UncompOffset TotalSize " -"UncompSize Ratio Check" +" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" msgstr "" " Bloky:\n" -" Proud Blok KomprPozice NekomprPozice CelkVelikost " -"NekomprVelikost Poměr Kontrola" +" Proud Blok KomprPozice NekomprPozice CelkVelikost NekomprVelikost Poměr Kontrola" #. TRANSLATORS: These are additional column headings #. for the most verbose listing mode. CheckVal @@ -346,32 +404,37 @@ msgstr "" #. 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:760 +#: 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:838 src/xz/list.c:1007 +#: 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:840 src/xz/list.c:1009 +#: 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:841 src/xz/list.c:1010 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "Yes" msgstr "Ano" -#: src/xz/list.c:841 src/xz/list.c:1010 +#: src/xz/list.c:906 src/xz/list.c:1081 msgid "No" msgstr "Ne" +#: src/xz/list.c:907 src/xz/list.c:1082 +#, 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:986 +#: src/xz/list.c:1057 #, c-format msgid "%s file\n" msgid_plural "%s files\n" @@ -379,20 +442,20 @@ msgstr[0] "%s soubor\n" msgstr[1] "%s soubory\n" msgstr[2] "%s souborů\n" -#: src/xz/list.c:999 +#: src/xz/list.c:1070 msgid "Totals:" msgstr "Celkem:" -#: src/xz/list.c:1000 +#: src/xz/list.c:1071 #, c-format msgid " Number of files: %s\n" msgstr " Počet souborů: %s\n" -#: src/xz/list.c:1072 +#: src/xz/list.c:1146 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:1078 +#: src/xz/list.c:1152 msgid "--list does not support reading from standard input" msgstr "--list nepodporuje čtení ze standardního vstupu" @@ -408,78 +471,83 @@ msgstr "%s: Neočekávaný konec vstupu při čtení názvů souborů" #: src/xz/main.c:120 #, c-format -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“?" +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 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:231 -msgid "" -"Cannot read data from standard input when reading filenames from standard " -"input" +#: src/xz/main.c:252 +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ů" + +#. TRANSLATORS: This is the program name in the beginning +#. 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 +#, c-format +msgid "%s: " msgstr "" -"Ze standardního vstupu nelze číst data, když se ze standardního vstupu " -"načítají názvy souborů" -#: src/xz/message.c:792 src/xz/message.c:842 +#: src/xz/message.c:791 src/xz/message.c:841 msgid "Internal error (bug)" msgstr "Interní chyba" -#: src/xz/message.c:799 +#: src/xz/message.c:798 msgid "Cannot establish signal handlers" msgstr "Nelze ustanovit ovladač signálu" -#: src/xz/message.c:808 +#: src/xz/message.c:807 msgid "No integrity check; not verifying file integrity" msgstr "Žádná kontrola integrity; integrita souboru se nebude ověřovat" -#: src/xz/message.c:811 +#: src/xz/message.c:810 msgid "Unsupported type of integrity check; not verifying file integrity" -msgstr "" -"Nepodporovaný typ kontroly integrity; integrita souboru se nebude ověřovat" +msgstr "Nepodporovaný typ kontroly integrity; integrita souboru se nebude ověřovat" -#: src/xz/message.c:818 +#: src/xz/message.c:817 msgid "Memory usage limit reached" msgstr "Dosaženo omezení použitelné paměti" -#: src/xz/message.c:821 +#: src/xz/message.c:820 msgid "File format not recognized" msgstr "Formát souboru nebyl rozpoznán" -#: src/xz/message.c:824 +#: src/xz/message.c:823 msgid "Unsupported options" msgstr "Nepodporovaná volba" -#: src/xz/message.c:827 +#: src/xz/message.c:826 msgid "Compressed data is corrupt" msgstr "Komprimovaná data jsou poškozená" -#: src/xz/message.c:830 +#: src/xz/message.c:829 msgid "Unexpected end of input" msgstr "Neočekávaný konec vstupu" -#: src/xz/message.c:881 +#: src/xz/message.c:862 +#, c-format +msgid "%s MiB of memory is required. The limiter is disabled." +msgstr "" + +#: src/xz/message.c:890 #, 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:1048 +#: src/xz/message.c:1057 #, c-format msgid "%s: Filter chain: %s\n" msgstr "%s: Omezující filtr: %s\n" -#: src/xz/message.c:1058 +#: src/xz/message.c:1067 #, c-format msgid "Try `%s --help' for more information." msgstr "Zkuste „%s --help“ pro více informací" -#: src/xz/message.c:1084 +#: src/xz/message.c:1093 #, c-format msgid "" "Usage: %s [OPTION]... [FILE]...\n" @@ -490,18 +558,15 @@ msgstr "" "Komprimuje nebo dekomprimuje SOUBORy ve formátu xz.\n" "\n" -#: src/xz/message.c:1091 -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:1100 +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:1095 +#: src/xz/message.c:1104 msgid " Operation mode:\n" msgstr "Operační režim:\n" -#: src/xz/message.c:1098 +#: src/xz/message.c:1107 msgid "" " -z, --compress force compression\n" " -d, --decompress force decompression\n" @@ -513,7 +578,7 @@ msgstr "" " -t, --test testovat integritu komprimovaného souboru\n" " -l, --list vypsat informace o souborech .xz" -#: src/xz/message.c:1104 +#: src/xz/message.c:1113 msgid "" "\n" " Operation modifiers:\n" @@ -521,39 +586,39 @@ msgstr "" "\n" "Modifikátory operací:\n" -#: src/xz/message.c:1107 +#: src/xz/message.c:1116 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 "" " -k, --keep zachovat (nemazat) vstupní soubory\n" -" -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" +" -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:1113 +#: src/xz/message.c:1122 +msgid "" +" --single-stream decompress only the first stream, and silently\n" +" ignore possible remaining input data" +msgstr "" + +#: src/xz/message.c:1125 msgid "" " --no-sparse do not create sparse files when decompressing\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" " --files[=FILE] read filenames to process from FILE; if FILE is\n" " omitted, filenames are read from the standard input;\n" -" filenames must be terminated with the newline " -"character\n" +" filenames must be terminated with the newline character\n" " --files0[=FILE] like --files but use the null character as terminator" msgstr "" " --no-sparse nevytvářet při dekomprimaci soubory řídkých matic\n" " -S, --suffix=.PRIP použít u komprimovaných souborů příponu „.PRIP“\n" -" --files[=SOUBOR] číst názvy souborů, které se mají zpracovat, ze " -"SOUBORu;\n" -" pokud není SOUBOR zadán, čte se ze standardního " -"vstupu;\n" +" --files[=SOUBOR] číst názvy souborů, které se mají zpracovat, ze SOUBORu;\n" +" pokud není SOUBOR zadán, čte se ze standardního vstupu;\n" " 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" +" --files0[=SOUBOR] stejné jako --files, ale použít k zakončování nulový znak" -#: src/xz/message.c:1121 +#: src/xz/message.c:1134 msgid "" "\n" " Basic file format and compression options:\n" @@ -561,7 +626,7 @@ msgstr "" "\n" "Základní přepínače pro formát souboru a komprimaci:\n" -#: src/xz/message.c:1123 +#: src/xz/message.c:1136 msgid "" " -F, --format=FMT file format to encode or decode; possible values are\n" " `auto' (default), `xz', `lzma', and `raw'\n" @@ -570,76 +635,94 @@ msgid "" msgstr "" " -F, --format=FORMÁT formát souboru k zakódování nebo dekódování; možné\n" " hodnoty jsou „auto“ (výchozí), „xz“, „lzma“ a „raw“\n" -" -C, --check=KONTROLA typ kontroly integrity: „none“ (používejte s " -"rozmyslem),\n" +" -C, --check=KONTROLA typ kontroly integrity: „none“ (používejte s rozmyslem),\n" " „crc32“, „crc64“ (výchozí) nebo „sha256“" -#: src/xz/message.c:1130 +#: src/xz/message.c:1141 +msgid " --ignore-check don't verify the integrity check when decompressing" +msgstr "" + +#: src/xz/message.c:1145 msgid "" -" -0 ... -9 compression preset; default is 6; take compressor " -"*and*\n" -" decompressor memory usage into account before using " -"7-9!" +" -0 ... -9 compression preset; default is 6; take compressor *and*\n" +" decompressor memory usage into account before using 7-9!" msgstr "" -" -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" +" -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:1134 +#: src/xz/message.c:1149 msgid "" -" -e, --extreme try to improve compression ratio by using more CPU " -"time;\n" +" -e, --extreme try to improve compression ratio by using more CPU time;\n" " does not affect decompressor memory requirements" msgstr "" " -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:1139 +#: src/xz/message.c:1153 +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 +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 +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 +msgid "" +" --flush-timeout=TIMEOUT\n" +" when compressing, if more than TIMEOUT milliseconds has\n" +" passed since the previous flush and reading more input\n" +" would block, all pending data is flushed out" +msgstr "" + +#: src/xz/message.c:1172 #, no-c-format msgid "" " --memlimit-compress=LIMIT\n" " --memlimit-decompress=LIMIT\n" " -M, --memlimit=LIMIT\n" -" set memory usage limit for compression, " -"decompression,\n" +" set memory usage limit for compression, decompression,\n" " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" msgstr "" " --memlimit-compress=LIMIT\n" " --memlimit-decompress=LIMIT\n" " -M, --memlimit=LIMIT\n" " nastaví omezení použitelné paměti pro komprimaci,\n" -" dekomprimaci nebo obojí; LIMIT je v bajtech, % z " -"paměti\n" +" dekomprimaci nebo obojí; LIMIT je v bajtech, % z paměti\n" " RAM nebo 0 pro výchozí" -#: src/xz/message.c:1146 +#: src/xz/message.c:1179 msgid "" -" --no-adjust if compression settings exceed the memory usage " -"limit,\n" -" give an error instead of adjusting the settings " -"downwards" +" --no-adjust if compression settings exceed the memory usage limit,\n" +" give an error instead of adjusting the settings downwards" msgstr "" -" --no-adjust pokud nastavení komprimace přesáhne omezení " -"použitelné\n" +" --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:1152 +#: src/xz/message.c:1185 msgid "" "\n" " Custom filter chain for compression (alternative for using presets):" msgstr "" "\n" -"Vlastní omezující filtr pro komprimaci (alternativa k použití " -"přednastavených):" +"Vlastní omezující filtr pro komprimaci (alternativa k použití přednastavených):" -#: src/xz/message.c:1161 +#: src/xz/message.c:1194 msgid "" "\n" -" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero " -"or\n" -" --lzma2[=OPTS] more of the following options (valid values; " -"default):\n" +" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" +" --lzma2[=OPTS] more of the following options (valid values; default):\n" " preset=PRE reset options to a preset (0-9[e])\n" " dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" " lc=NUM number of literal context bits (0-4; 3)\n" @@ -647,33 +730,24 @@ msgid "" " pb=NUM number of position bits (0-4; 2)\n" " mode=MODE compression mode (fast, normal; normal)\n" " nice=NUM nice length of a match (2-273; 64)\n" -" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; " -"bt4)\n" -" depth=NUM maximum search depth; 0=automatic " -"(default)" +" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n" +" depth=NUM maximum search depth; 0=automatic (default)" msgstr "" "\n" -" --lzma1[=VOLBY] LZMA1 nebo LZMA2; VOLBY je čárkou oddělovaný seznam " -"žádné\n" -" --lzma2[=VOLBY] nebo více následujících voleb (platné hodnoty; " -"výchozí):\n" -" preset=PŘE změnit volby na PŘEdnastavené (0 – 9" -"[e])\n" -" dict=POČ velikost slovníku (4 KiB – 1536 MiB; 8 " -"MiB)\n" -" lc=POČ počet kontextových bitů literálu (0 – 4; " -"3)\n" -" lp=POČ počet pozičních bitů literálu (0 – 4; " -"0)\n" +" --lzma1[=VOLBY] LZMA1 nebo LZMA2; VOLBY je čárkou oddělovaný seznam žádné\n" +" --lzma2[=VOLBY] nebo více následujících voleb (platné hodnoty; výchozí):\n" +" preset=PŘE změnit volby na PŘEdnastavené (0 – 9[e])\n" +" dict=POČ velikost slovníku (4 KiB – 1536 MiB; 8 MiB)\n" +" lc=POČ počet kontextových bitů literálu (0 – 4; 3)\n" +" lp=POČ počet pozičních bitů literálu (0 – 4; 0)\n" " pb=POČ počet pozičních bitů (0 – 4; 2)\n" " mode=REŽIM režim komprimace (fast, normal; normal)\n" " nice=NUM příznivá délka shody (2 – 273; 64)\n" -" mf=NÁZEV hledání shod (hc3, hc4, bt2, bt3, bt4; " -"bt4)\n" +" mf=NÁZEV hledání shod (hc3, hc4, bt2, bt3, bt4; bt4)\n" " depth=POČ maximální hloubka prohledávání;\n" " 0 = automaticky (výchozí)" -#: src/xz/message.c:1176 +#: src/xz/message.c:1209 msgid "" "\n" " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" @@ -695,7 +769,7 @@ msgstr "" " Platné volby pro všechny filtry BCJ:\n" " start=POČ počáteční posun pro převody (výchozí=0)" -#: src/xz/message.c:1188 +#: src/xz/message.c:1221 msgid "" "\n" " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" @@ -704,11 +778,10 @@ msgid "" msgstr "" "\n" " --delta[=VOLBY] Filtr Delta; platné VOLBY (platné hodnoty; výchozí):\n" -" dist=POČ vzdálenost mezi bajty, které jsou " -"odečítány\n" +" dist=POČ vzdálenost mezi bajty, které jsou odečítány\n" " jeden od druhého (1 – 256; 1)" -#: src/xz/message.c:1196 +#: src/xz/message.c:1229 msgid "" "\n" " Other options:\n" @@ -716,83 +789,79 @@ msgstr "" "\n" " Ostatní přepínače:\n" -#: src/xz/message.c:1199 +#: src/xz/message.c:1232 msgid "" -" -q, --quiet suppress warnings; specify twice to suppress errors " -"too\n" +" -q, --quiet suppress warnings; specify twice to suppress errors too\n" " -v, --verbose be verbose; specify twice for even more verbose" msgstr "" -" -q, --quiet potlačit varování; zadáním dvakrát, potlačíte i " -"chyby\n" +" -q, --quiet potlačit varování; zadáním dvakrát, potlačíte i chyby\n" " -v, --verbose podrobnější zprávy; zadáním dvakrát, budou ještě\n" " podrobnější" -#: src/xz/message.c:1204 +#: src/xz/message.c:1237 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:1206 -msgid "" -" --robot use machine-parsable messages (useful for scripts)" +#: src/xz/message.c:1239 +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:1209 +#: src/xz/message.c:1242 msgid "" -" --info-memory display the total amount of RAM and the currently " -"active\n" +" --info-memory display the total amount of RAM and the currently active\n" " memory usage limits, and exit" msgstr "" -" --info-memory zobrazit celkové množství paměti RAM a současné " -"aktivní\n" +" --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:1212 +#: src/xz/message.c:1245 msgid "" " -h, --help display the short help (lists only the basic options)\n" " -H, --long-help display this long help and exit" msgstr "" -" -h, --help zobrazit krátkou nápovědu (vypíše jen základní " -"přepínače)\n" +" -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:1216 +#: src/xz/message.c:1249 msgid "" " -h, --help display this short help and exit\n" " -H, --long-help display the long help (lists also the advanced options)" msgstr "" " -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)" +" -H, --long-help zobrazit úplnou nápovědu (vypíše i pokročilé přepínače)" -#: src/xz/message.c:1221 +#: src/xz/message.c:1254 msgid " -V, --version display the version number and exit" msgstr " -V, --version zobrazit číslo verze a skončit" -#: src/xz/message.c:1223 +#: src/xz/message.c:1256 msgid "" "\n" "With no FILE, or when FILE is -, read standard input.\n" msgstr "" "\n" -"Pokud SOUBOR není zadán nebo pokud je -, bude se číst ze standardního " -"vstupu.\n" +"Pokud SOUBOR není zadán nebo pokud je -, bude se číst ze standardního vstupu.\n" #. TRANSLATORS: This message indicates the bug reporting address #. 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:1229 +#: src/xz/message.c:1262 #, 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:1231 +#: src/xz/message.c:1264 #, c-format msgid "%s home page: <%s>\n" msgstr "Domovská stránka %s: <%s>\n" +#: src/xz/message.c:1268 +msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." +msgstr "" + #: src/xz/options.c:86 #, c-format msgid "%s: Options must be `name=value' pairs separated with commas" @@ -822,67 +891,62 @@ msgstr "Součet lc a lp nesmí překročit hodnotu 4" msgid "The selected match finder requires at least nice=%" msgstr "Vybraný vyhledávač shod vyžaduje minimálně nice=%" -#: src/xz/suffix.c:79 src/xz/suffix.c:164 +#: 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" +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:99 +#: 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:154 +#: src/xz/suffix.c:185 #, 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:205 +#: src/xz/suffix.c:393 #, c-format msgid "%s: Invalid filename suffix" msgstr "%s: Neplatná přípona názvu souboru" -#: src/xz/util.c:61 +#: src/xz/util.c:71 #, c-format msgid "%s: Value is not a non-negative decimal integer" msgstr "%s: Hodnota není nezáporné desítkové číslo" -#: src/xz/util.c:103 +#: src/xz/util.c:113 #, c-format msgid "%s: Invalid multiplier suffix" msgstr "%s: Neplatná jednotka s předponou" -#: src/xz/util.c:105 +#: src/xz/util.c:115 msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)." -msgstr "" -"Platné jednotky s předponami jsou „KiB“ (2^10 B), „MiB“ (2^20 B) a " -"„GiB“ (2^30 B)." +msgstr "Platné jednotky s předponami jsou „KiB“ (2^10 B), „MiB“ (2^20 B) a „GiB“ (2^30 B)." -#: src/xz/util.c:122 +#: src/xz/util.c:132 #, c-format msgid "Value of the option `%s' must be in the range [%, %]" msgstr "Hodnota volby „%s“ musí být v rozsahu [%, %]" -#: src/xz/util.c:247 +#: src/xz/util.c:267 msgid "Empty filename, skipping" msgstr "Prázdný název souboru, vynechává se" -#: src/xz/util.c:261 +#: src/xz/util.c:281 msgid "Compressed data cannot be read from a terminal" msgstr "Z terminálu nelze číst komprimovaná data" -#: src/xz/util.c:274 +#: src/xz/util.c:294 msgid "Compressed data cannot be written to a terminal" msgstr "Do terminálu nelze zapisovat komprimovaná data" -#: src/common/tuklib_exit.c:39 +#: src/common/tuklib_exit.c:40 msgid "Writing to standard output failed" msgstr "Zápis do standardního výstupu selhal" -#: src/common/tuklib_exit.c:42 +#: src/common/tuklib_exit.c:43 msgid "Unknown error" msgstr "Neznámá chyba" @@ -893,49 +957,37 @@ msgstr "Neznámá chyba" #~ msgstr "%s MiB (%s bajtů)\n" #~ msgid "" -#~ " -e, --extreme use more CPU time when encoding to increase " -#~ "compression\n" +#~ " -e, --extreme use more CPU time when encoding to increase compression\n" #~ " ratio without increasing memory usage of the decoder" #~ msgstr "" -#~ " -e, --extreme využít více procesorového času pro kódování, čímž " -#~ "se\n" -#~ " zvýší kompresní poměr bez zvýšení paměti použité " -#~ "kodérem" +#~ " -e, --extreme využít více procesorového času pro kódování, čímž se\n" +#~ " zvýší kompresní poměr bez zvýšení paměti použité kodérem" #~ msgid "" -#~ " -M, --memory=NUM use roughly NUM bytes of memory at maximum; 0 " -#~ "indicates\n" +#~ " -M, --memory=NUM use roughly NUM bytes of memory at maximum; 0 indicates\n" #~ " the default setting, which is 40 % of total RAM" #~ msgstr "" -#~ " -M, --memory=POČ použít zhruba POČ bajtů paměti jako maximum; 0 " -#~ "znamená\n" -#~ " výchozí nastavení, což je 40% celkového množství " -#~ "paměti" +#~ " -M, --memory=POČ použít zhruba POČ bajtů paměti jako maximum; 0 znamená\n" +#~ " výchozí nastavení, což je 40% celkového množství paměti" #~ msgid "" #~ "\n" -#~ " --subblock[=OPTS] Subblock filter; valid OPTS (valid values; " -#~ "default):\n" +#~ " --subblock[=OPTS] Subblock filter; valid OPTS (valid values; default):\n" #~ " size=NUM number of bytes of data per subblock\n" #~ " (1 - 256Mi; 4Ki)\n" -#~ " rle=NUM run-length encoder chunk size (0-256; " -#~ "0)" +#~ " rle=NUM run-length encoder chunk size (0-256; 0)" #~ msgstr "" #~ "\n" -#~ " --subblock[=VOLBY] Subblokový filtr; platné VOLBY (platné hodnoty; " -#~ "výchozí):\n" +#~ " --subblock[=VOLBY] Subblokový filtr; platné VOLBY (platné hodnoty; výchozí):\n" #~ " size=POČ počet bajtů dat na subblok\n" #~ " (1 - 256 Mi; 4 Ki)\n" -#~ " rle=POČ velikost dávky pro kodér run-length " -#~ "(0-256; 0)" +#~ " rle=POČ velikost dávky pro kodér run-length (0-256; 0)" #~ msgid "" -#~ "On this system and configuration, this program will use a maximum of " -#~ "roughly\n" +#~ "On this system and configuration, this program will use a maximum of roughly\n" #~ "%s MiB RAM and " #~ msgstr "" -#~ "Na tomto systému a s tímto nastavením použije tento program maximum ze " -#~ "zhruba\n" +#~ "Na tomto systému a s tímto nastavením použije tento program maximum ze zhruba\n" #~ "%s MiB RAM a " #~ msgid "" -- cgit v1.2.3 From 3be82d2f7dc882258caf0f0a69214e5916b2bdda Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 17 Mar 2020 16:26:04 +0200 Subject: Update NEWS for 5.2.5. --- NEWS | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/NEWS b/NEWS index d5dbabd5..d3f7d602 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,111 @@ XZ Utils Release Notes ====================== +5.2.5 (2020-03-17) + + * liblzma: + + - Fixed several C99/C11 conformance bugs. Now the code is clean + under gcc/clang -fsanitize=undefined. Some of these changes + might have a negative effect on performance with old GCC + versions or compilers other than GCC and Clang. The configure + option --enable-unsafe-type-punning can be used to (mostly) + restore the old behavior but it shouldn't normally be used. + + - Improved API documentation of lzma_properties_decode(). + + - Added a very minor encoder speed optimization. + + * xz: + + - Fixed a crash in "xz -dcfv not_an_xz_file". All four options + were required to trigger it. The crash occurred in the + progress indicator code when xz was in passthru mode where + xz works like "cat". + + - Fixed an integer overflow with 32-bit off_t. It could happen + when decompressing a file that has a long run of zero bytes + which xz would try to write as a sparse file. Since the build + system enables large file support by default, off_t is + normally 64-bit even on 32-bit systems. + + - Fixes for --flush-timeout: + * Fix semi-busy-waiting. + * Avoid unneeded flushes when no new input has arrived + since the previous flush was completed. + + - Added a special case for 32-bit xz: If --memlimit-compress is + used to specify a limit that exceeds 4020 MiB, the limit will + be set to 4020 MiB. The values "0" and "max" aren't affected + by this and neither is decompression. This hack can be + helpful when a 32-bit xz has access to 4 GiB address space + but the specified memlimit exceeds 4 GiB. This can happen + e.g. with some scripts. + + - Capsicum sandbox is now enabled by default where available + (FreeBSD >= 10). The sandbox debug messages (xz -vv) were + removed since they seemed to be more annoying than useful. + + - DOS build now requires DJGPP 2.05 instead of 2.04beta. + A workaround for a locale problem with DJGPP 2.05 was added. + + * xzgrep and other scripts: + + - Added a configure option --enable-path-for-scripts=PREFIX. + It is disabled by default except on Solaris where the default + is /usr/xpg4/bin. See INSTALL for details. + + - Added a workaround for a POSIX shell detection problem on + Solaris. + + * Build systems: + + - Added preliminary build instructions for z/OS. See INSTALL + section 1.2.9. + + - Experimental CMake support was added. It should work to build + static liblzma on a few operating systems. It may or may not + work to build shared liblzma. On some platforms it can build + xz and xzdec too but those are only for testing. See the + comment in the beginning of CMakeLists.txt for details. + + - Visual Studio project files were updated. + WindowsTargetPlatformVersion was removed from VS2017 files + and set to "10.0" in the added VS2019 files. In the future + the VS project files will be removed when CMake support is + good enough. + + - New #defines in config.h: HAVE___BUILTIN_ASSUME_ALIGNED, + HAVE___BUILTIN_BSWAPXX, and TUKLIB_USE_UNSAFE_TYPE_PUNNING. + + - autogen.sh has a new optional dependency on po4a and a new + option --no-po4a to skip that step. This matters only if one + wants to remake the build files. po4a is used to update the + translated man pages but as long as the man pages haven't + been modified, there's nothing to update and one can use + --no-po4a to avoid the dependency on po4a. + + * Translations: + + - XZ Utils translations are now handled by the Translation + Project: https://translationproject.org/domain/xz.html + + - All man pages are now included in German too. + + - New xz translations: Brazilian Portuguese, Finnish, + Hungarian, Chinese (simplified), Chinese (traditional), + and Danish (partial translation) + + - Updated xz translations: French, German, Italian, and Polish + + - Unfortunately a few new xz translations weren't included due + to technical problems like too long lines in --help output or + misaligned column headings in tables. In the future, many of + these strings will be split and e.g. the table column + alignment will be handled in software. This should make the + strings easier to translate. + + 5.2.4 (2018-04-29) * liblzma: -- cgit v1.2.3 From 2327a461e1afce862c22269b80d3517801103c1b Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 17 Mar 2020 16:27:42 +0200 Subject: Bump version and soname for 5.2.5. --- src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/liblzma/Makefile.am b/src/liblzma/Makefile.am index ae68107b..f9efbf6e 100644 --- a/src/liblzma/Makefile.am +++ b/src/liblzma/Makefile.am @@ -24,7 +24,7 @@ liblzma_la_CPPFLAGS = \ -I$(top_srcdir)/src/liblzma/simple \ -I$(top_srcdir)/src/common \ -DTUKLIB_SYMBOL_PREFIX=lzma_ -liblzma_la_LDFLAGS = -no-undefined -version-info 7:4:2 +liblzma_la_LDFLAGS = -no-undefined -version-info 7:5:2 EXTRA_DIST += liblzma.map validate_map.sh if COND_SYMVERS diff --git a/src/liblzma/api/lzma/version.h b/src/liblzma/api/lzma/version.h index 143c7dea..2bf3eaed 100644 --- a/src/liblzma/api/lzma/version.h +++ b/src/liblzma/api/lzma/version.h @@ -22,7 +22,7 @@ */ #define LZMA_VERSION_MAJOR 5 #define LZMA_VERSION_MINOR 2 -#define LZMA_VERSION_PATCH 4 +#define LZMA_VERSION_PATCH 5 #define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE #ifndef LZMA_VERSION_COMMIT -- cgit v1.2.3