Compare commits

...

377 Commits
master ... v5.2

Author SHA1 Message Date
Jia Tan 774145adfd Bump version and soname for 5.2.12. 2023-05-04 21:55:11 +08:00
Jia Tan dbb481270a Add NEWS for 5.2.12. 2023-05-04 21:55:07 +08:00
Jia Tan 46b19ec4ae Translations: Update the Croatian translation. 2023-05-04 21:42:24 +08:00
Lasse Collin 809a2fd698 tuklib_integer.h: Fix a recent copypaste error in Clang detection.
Wrong line was changed in 7062348bf3.
Also, this has >= instead of == since ints larger than 32 bits would
work too even if not relevant in practice.
2023-05-03 22:55:59 +03:00
Jia Tan fbecaa2eb4 Update THANKS. 2023-05-03 22:33:10 +03:00
Jia Tan b02e74eb73 Windows: Include <intrin.h> when needed.
Legacy Windows did not need to #include <intrin.h> to use the MSVC
intrinsics. Newer versions likely just issue a warning, but the MSVC
documentation says to include the header file for the intrinsics we use.

GCC and Clang can "pretend" to be MSVC on Windows, so extra checks are
needed in tuklib_integer.h to only include <intrin.h> when it will is
actually needed.
2023-05-03 22:33:10 +03:00
Jia Tan 8efb6ea63b tuklib_integer: Use __builtin_clz() with Clang.
Clang has support for __builtin_clz(), but previously Clang would
fallback to either the MSVC intrinsic or the regular C code. This was
discovered due to a bug where a new version of Clang required the
<intrin.h> header file in order to use the MSVC intrinsics.

Thanks to Anton Kochkov for notifying us about the bug.
2023-05-03 22:33:10 +03:00
Lasse Collin 3bd906f1f3 liblzma: Update project maintainers in lzma.h.
AUTHORS was updated earlier, lzma.h was simply forgotten.
2023-05-03 22:33:10 +03:00
Jia Tan 0ab5527c46 liblzma: Cleans up old commented out code. 2023-05-03 22:33:10 +03:00
Jia Tan 275e36013d Build: Removes redundant check for LZMA1 filter support. 2023-05-03 22:33:10 +03:00
Lasse Collin a2e129a81f Build: Add a comment that AC_PROG_CC_C99 is needed for Autoconf 2.69.
It's obsolete in Autoconf >= 2.70 and just an alias for AC_PROG_CC
but Autoconf 2.69 requires AC_PROG_CC_C99 to get a C99 compiler.
2023-03-21 14:24:43 +02:00
Lasse Collin 260683a6e2 Build: configure.ac: Use AS_IF and AS_CASE where required.
This makes no functional difference in the generated configure
(at least with the Autotools versions I have installed) but this
change might prevent future bugs like the one that was just
fixed in the commit 5a5bd7f871.
2023-03-21 14:24:37 +02:00
Lasse Collin edcde3e387 Update THANKS. 2023-03-21 14:15:14 +02:00
Lasse Collin dcd6882cb9 Build: Fix --disable-threads breaking the building of shared libs.
This is broken in the releases 5.2.6 to 5.4.2. A workaround
for these releases is to pass EGREP='grep -E' as an argument
to configure in addition to --disable-threads.

The problem appeared when m4/ax_pthread.m4 was updated in
the commit 6629ed929c which
introduced the use of AC_EGREP_CPP. AC_EGREP_CPP calls
AC_REQUIRE([AC_PROG_EGREP]) to set the shell variable EGREP
but this was only executed if POSIX threads were enabled.
Libtool code also has AC_REQUIRE([AC_PROG_EGREP]) but Autoconf
omits it as AC_PROG_EGREP has already been required earlier.
Thus, if not using POSIX threads, the shell variable EGREP
would be undefined in the Libtool code in configure.

ax_pthread.m4 is fine. The bug was in configure.ac which called
AX_PTHREAD conditionally in an incorrect way. Using AS_CASE
ensures that all AC_REQUIREs get always run.

Thanks to Frank Busse for reporting the bug.
Fixes: https://github.com/tukaani-project/xz/issues/45
2023-03-21 14:15:14 +02:00
Jia Tan 3e206e5c43 Bump version and soname for 5.2.11. 2023-03-18 22:25:59 +08:00
Jia Tan 05b0a071b6 Add NEWS for 5.2.11. 2023-03-18 22:24:49 +08:00
Lasse Collin 84b8cd3ffc Update the copy of GNU GPLv3 from gnu.org to COPYING.GPLv3. 2023-03-18 22:01:59 +08:00
Lasse Collin 090ea9ddd3 Change a few HTTP URLs to HTTPS.
The xz man page timestamp was intentionally left unchanged.
2023-03-18 22:00:28 +08:00
Lasse Collin 01f1da25e5 CMake: Require that the C compiler supports C99 or a newer standard.
Thanks to autoantwort for reporting the issue and suggesting
a different patch:
https://github.com/tukaani-project/xz/pull/42
2023-03-11 21:53:16 +02:00
Lasse Collin 2333bb5454 Update THANKS. 2023-03-11 21:47:58 +02:00
Lasse Collin 09363bea46 liblzma: Avoid null pointer + 0 (undefined behavior in C).
In the C99 and C17 standards, section 6.5.6 paragraph 8 means that
adding 0 to a null pointer is undefined behavior. As of writing,
"clang -fsanitize=undefined" (Clang 15) diagnoses this. However,
I'm not aware of any compiler that would take advantage of this
when optimizing (Clang 15 included). It's good to avoid this anyway
since compilers might some day infer that pointer arithmetic implies
that the pointer is not NULL. That is, the following foo() would then
unconditionally return 0, even for foo(NULL, 0):

    void bar(char *a, char *b);

    int foo(char *a, size_t n)
    {
        bar(a, a + n);
        return a == NULL;
    }

In contrast to C, C++ explicitly allows null pointer + 0. So if
the above is compiled as C++ then there is no undefined behavior
in the foo(NULL, 0) call.

To me it seems that changing the C standard would be the sane
thing to do (just add one sentence) as it would ensure that a huge
amount of old code won't break in the future. Based on web searches
it seems that a large number of codebases (where null pointer + 0
occurs) are being fixed instead to be future-proof in case compilers
will some day optimize based on it (like making the above foo(NULL, 0)
return 0) which in the worst case will cause security bugs.

Some projects don't plan to change it. For example, gnulib and thus
many GNU tools currently require that null pointer + 0 is defined:

    https://lists.gnu.org/archive/html/bug-gnulib/2021-11/msg00000.html

    https://www.gnu.org/software/gnulib/manual/html_node/Other-portability-assumptions.html

In XZ Utils null pointer + 0 issue should be fixed after this
commit. This adds a few if-statements and thus branches to avoid
null pointer + 0. These check for size > 0 instead of ptr != NULL
because this way bugs where size > 0 && ptr == NULL will likely
get caught quickly. None of them are in hot spots so it shouldn't
matter for performance.

A little less readable version would be replacing

    ptr + offset

with

    offset != 0 ? ptr + offset : ptr

or creating a macro for it:

    #define my_ptr_add(ptr, offset) \
            ((offset) != 0 ? ((ptr) + (offset)) : (ptr))

Checking for offset != 0 instead of ptr != NULL allows GCC >= 8.1,
Clang >= 7, and Clang-based ICX to optimize it to the very same code
as ptr + offset. That is, it won't create a branch. So for hot code
this could be a good solution to avoid null pointer + 0. Unfortunately
other compilers like ICC 2021 or MSVC 19.33 (VS2022) will create a
branch from my_ptr_add().

Thanks to Marcin Kowalczyk for reporting the problem:
https://github.com/tukaani-project/xz/issues/36
2023-03-11 21:47:47 +02:00
Lasse Collin d9445b5b2d Update THANKS. 2023-03-11 21:45:27 +02:00
Lasse Collin 3cc8ece2dc Build: Use only the generic symbol versioning on MicroBlaze.
On MicroBlaze, GCC 12 is broken in sense that
__has_attribute(__symver__) returns true but it still doesn't
support the __symver__ attribute even though the platform is ELF
and symbol versioning is supported if using the traditional
__asm__(".symver ...") method. Avoiding the traditional method is
good because it breaks LTO (-flto) builds with GCC.

See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766

For now the only extra symbols in liblzma_linux.map are the
compatibility symbols with the patch that spread from RHEL/CentOS 7.
These require the use of __symver__ attribute or __asm__(".symver ...")
in the C code. Compatibility with the patch from CentOS 7 doesn't
seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze
instead. It doesn't require anything special in the C code and thus
no LTO issues either.

An alternative would be to detect support for __symver__
attribute in configure.ac and CMakeLists.txt and fall back
to __asm__(".symver ...") but then LTO would be silently broken
on MicroBlaze. It sounds likely that MicroBlaze is a special
case so let's treat it as a such because that is simpler. If
a similar issue exists on some other platform too then hopefully
someone will report it and this can be reconsidered.

(This doesn't do the same fix in CMakeLists.txt. Perhaps it should
but perhaps CMake build of liblzma doesn't matter much on MicroBlaze.
The problem breaks the build so it's easy to notice and can be fixed
later.)

Thanks to Vincent Fazio for reporting the problem and proposing
a patch (in the end that solution wasn't used):
https://github.com/tukaani-project/xz/pull/32
2023-03-11 21:45:26 +02:00
Jia Tan 050c6dbf96 liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR.
LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put
documentation after a member.
2023-03-11 21:45:26 +02:00
Jia Tan 8daaac8e10 tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.
tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64
to retrieve a function address. The proper way to do this is to cast the
return value to the type of function pointer retrieved. Unfortunately,
this causes a cast-function-type warning, so the best solution is to
simply ignore the warning.
2023-03-11 21:45:26 +02:00
Jia Tan 6c9a2c2e46 xz: Add missing comment for coder_set_compression_settings() 2023-03-11 21:45:26 +02:00
Jia Tan ccbb991efa xz: Do not set compression settings with raw format in list mode.
Calling coder_set_compression_settings() in list mode with verbose mode
on caused the filter chain and memory requirements to print. This was
unnecessary since the command results in an error and not consistent
with other formats like lzma and alone.
2023-03-11 21:45:26 +02:00
Lasse Collin 6df383be4a xz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1).
It makes no difference here as the return value fits into an int
too and it then gets ignored but this looks better.
2023-03-11 21:45:26 +02:00
Lasse Collin 2ca95b7cfe liblzma: Silence warnings from clang -Wconditional-uninitialized.
This is similar to 2ce4f36f17.
The actual initialization of the variables is done inside
mythread_sync() macro. Clang doesn't seem to see that
the initialization code inside the macro is always executed.
2023-03-11 21:38:31 +02:00
Lasse Collin f900dd937f Fix warnings from clang -Wdocumentation. 2023-03-11 21:37:49 +02:00
Jia Tan 3e2b345cfd xz: Fix warning -Wformat-nonliteral on clang in message.c.
clang and gcc differ in how they handle -Wformat-nonliteral. gcc will
allow a non-literal format string as long as the function takes its
format arguments as a va_list.
2023-03-11 21:37:49 +02:00
Lasse Collin f2192d13b5 CMake/Windows: Add a workaround for windres from GNU binutils.
This is combined from the following commits in the master branch:
443dfebced
6b117d3b1f
5e34774c31

Thanks to Iouri Kharon for the bug report, the original patch,
and testing.
2023-03-11 21:34:26 +02:00
Lasse Collin 35167d71f8 CMake: Update cmake_minimum_required from 3.13...3.16 to 3.13...3.25.
The changes listed on cmake-policies(7) for versions 3.17 to 3.25
shouldn't affect this project.
2023-03-11 21:34:26 +02:00
Lasse Collin f8cae7cee0 Update THANKS. 2023-03-11 21:34:26 +02:00
Lasse Collin 7c337404bf CMake: Fix a copypaste error in xzdec Windows resource file handling.
It was my mistake. Thanks to Iouri Kharon for the bug report.
2023-03-11 21:34:26 +02:00
Lasse Collin 4dbdbd02d2 CMake/Windows: Add resource files to xz.exe and xzdec.exe.
The command line tools cannot be built with MSVC for now but
they can be built with MinGW-w64.

Thanks to Iouri Kharon for the bug report and the original patch.
2023-03-11 21:34:26 +02:00
Jia Tan 2155fef528 liblzma: Update documentation for lzma_filter_encoder. 2023-03-11 21:34:26 +02:00
Jia Cheong Tan 7067c1ca65 Doxygen: Update .gitignore for generating docs for in source build.
In source builds are not recommended, but we should still ignore
the generated artifacts.
2023-03-11 21:34:24 +02:00
Jia Tan f62e5aae51 CMake: Update .gitignore for CMake artifacts from in source build.
In source builds are not recommended, but we can make it easier
by ignoring the generated artifacts from CMake.
2023-03-11 21:33:33 +02:00
Lasse Collin f7c2cc5561 Bump version and soname for 5.2.10. 2022-12-13 13:03:20 +02:00
Lasse Collin e4e5d5bbb1 Add NEWS for 5.2.10. 2022-12-13 13:02:15 +02:00
Lasse Collin e207267c4b Tests: Fix a typo in tests/files/README. 2022-12-13 12:31:10 +02:00
Lasse Collin 90f8e0828b Update AUTHORS. 2022-12-12 19:09:20 +02:00
Lasse Collin 59a17888e9 xz: Make args_info.files_name a const pointer. 2022-12-12 15:53:03 +02:00
Lasse Collin 4af80d4f51 xz: Don't modify argv[].
The code that parses --memlimit options and --block-list modified
the argv[] when parsing the option string from optarg. This was
visible in "ps auxf" and such and could be confusing. I didn't
understand it back in the day when I wrote that code. Now a copy
is allocated when modifiable strings are needed.
2022-12-12 15:53:01 +02:00
Lasse Collin 7623b22d1d liblzma: Check for unexpected NULL pointers in block_header_decode().
The API docs gave an impression that such checks are done
but they actually weren't done. In practice it made little
difference since the calling code has a bug if these are NULL.

Thanks to Jia Tan for the original patch that checked for
block->filters == NULL.
2022-12-12 15:47:17 +02:00
Lasse Collin ef315163ef liblzma: Use __has_attribute(__symver__) to fix Clang detection.
If someone sets up Clang to define __GNUC__ to 10 or greater
then symvers broke. __has_attribute is supported by such GCC
and Clang versions that don't support __symver__ so this should
be much better and simpler way to detect if __symver__ is
actually supported.

Thanks to Tomasz Gajc for the bug report.
2022-12-12 15:47:17 +02:00
Lasse Collin 7e86a7632c Update THANKS (sync all from master). 2022-12-12 15:45:04 +02:00
Lasse Collin d8a898eb99 Bump version and soname for 5.2.9. 2022-11-30 18:33:05 +02:00
Lasse Collin efd4430e21 Add NEWS for 5.2.9. 2022-11-30 18:31:16 +02:00
Lasse Collin 2dc1bc97a5 Change the bug report address.
It forwards to me and Jia Tan.

Also update the IRC reference in README as #tukaani was moved
to Libera Chat long ago.
2022-11-30 18:20:18 +02:00
Lasse Collin fb13a234d9 Update to HTTPS URLs in AUTHORS. 2022-11-30 18:20:13 +02:00
Lasse Collin 841448e36d liblzma: Remove two FIXME comments. 2022-11-29 10:46:06 +02:00
Lasse Collin b61da00c7f Build: Don't put GNU/Linux-specific symbol versions into static liblzma.
It not only makes no sense to put symbol versions into a static library
but it can also cause breakage.

By default Libtool #defines PIC if building a shared library and
doesn't define it for static libraries. This is documented in the
Libtool manual. It can be overriden using --with-pic or --without-pic.
configure.ac detects if --with-pic or --without-pic is used and then
gives an error if neither --disable-shared nor --disable-static was
used at the same time. Thus, in normal situations it works to build
both shared and static library at the same time on GNU/Linux,
only --with-pic or --without-pic requires that only one type of
library is built.

Thanks to John Paul Adrian Glaubitz from Debian for reporting
the problem that occurred on ia64:
https://www.mail-archive.com/xz-devel@tukaani.org/msg00610.html
2022-11-24 23:50:46 +02:00
Lasse Collin 6c29793b3c CMake: Don't use symbol versioning with static library. 2022-11-24 23:50:46 +02:00
Lasse Collin 872623def5 liblzma: Fix another invalid free() after memory allocation failure.
This time it can happen when lzma_stream_encoder_mt() is used
to reinitialize an existing multi-threaded Stream encoder
and one of 1-4 tiny allocations in lzma_filters_copy() fail.

It's very similar to the previous bug
10430fbf38, happening with
an array of lzma_filter structures whose old options are freed
but the replacement never arrives due to a memory allocation
failure in lzma_filters_copy().
2022-11-24 10:58:04 +02:00
Jia Tan b0f8d9293c liblzma: Add support for LZMA_SYNC_FLUSH in the Block encoder.
The documentation mentions that lzma_block_encoder() supports
LZMA_SYNC_FLUSH but it was never added to supported_actions[]
in the internal structure. Because of this, LZMA_SYNC_FLUSH could
not be used with the Block encoder unless it was the next coder
after something like stream_encoder() or stream_encoder_mt().
2022-11-24 10:58:04 +02:00
Lasse Collin 6997e0b5e2 liblzma: Add lzma_attr_warn_unused_result to lzma_filters_copy(). 2022-11-24 10:58:04 +02:00
Lasse Collin f94a3e3460 liblzma: Fix invalid free() after memory allocation failure.
The bug was in the single-threaded .xz Stream encoder
in the code that is used for both re-initialization and for
lzma_filters_update(). To trigger it, an application had
to either re-initialize an existing encoder instance with
lzma_stream_encoder() or use lzma_filters_update(), and
then one of the 1-4 tiny allocations in lzma_filters_copy()
(called from stream_encoder_update()) must fail. An error
was correctly reported but the encoder state was corrupted.

This is related to the recent fix in
f8ee61e74e which is good but
it wasn't enough to fix the main problem in stream_encoder.c.
2022-11-24 10:58:04 +02:00
Lasse Collin 8309385b44 liblzma: Fix language in a comment. 2022-11-24 10:57:11 +02:00
Lasse Collin 5fecba6022 liblzma: Fix infinite loop in LZMA encoder init with dict_size >= 2 GiB.
The encoder doesn't support dictionary sizes larger than 1536 MiB.
This is validated, for example, when calculating the memory usage
via lzma_raw_encoder_memusage(). It is also enforced by the LZ
part of the encoder initialization. However, LZMA encoder with
LZMA_MODE_NORMAL did an unsafe calculation with dict_size before
such validation and that results in an infinite loop if dict_size
was 2 << 30 or greater.
2022-11-24 10:57:03 +02:00
Lasse Collin 1946b2b141 liblzma: Fix two Doxygen commands in the API headers.
These were caught by clang -Wdocumentation.
2022-11-24 10:56:50 +02:00
Lasse Collin 5476089d9c Bump version and soname for 5.2.8. 2022-11-13 19:58:47 +02:00
Lasse Collin f9994f395d Add NEWS for 5.2.8. 2022-11-13 19:57:26 +02:00
Lasse Collin cdf14b2899 Update THANKS. 2022-11-11 17:16:19 +02:00
Lasse Collin 454f567e58 liblzma: Fix building with Intel ICC (the classic compiler).
It claims __GNUC__ >= 10 but doesn't support __symver__ attribute.

Thanks to Stephen Sachs.
2022-11-11 17:16:19 +02:00
Lasse Collin 2f01169f5a liblzma: Fix incorrect #ifdef for x86 SSE2 support.
__SSE2__ is the correct macro for SSE2 support with GCC, Clang,
and ICC. __SSE2_MATH__ means doing floating point math with SSE2
instead of 387. Often the latter macro is defined if the first
one is but it was still a bug.
2022-11-11 14:36:32 +02:00
Lasse Collin fc1358679e Scripts: Ignore warnings from xz.
In practice this means making the scripts work when
the input files have an unsupported check type which
isn't a problem in practice unless support for
some check types has been disabled at build time.
2022-11-11 13:50:56 +02:00
Lasse Collin a08be1c420 xz: Add comments about stdin and src_st.st_size.
"xz -v < regular_file > out.xz" doesn't display the percentage
and estimated remaining time because it doesn't even try to
check the input file size when input is read from stdin.
This could be improved but for now there's just a comment
to remind about it.
2022-11-11 13:48:06 +02:00
Lasse Collin 3ee411cd1c xz: Fix displaying of file sizes in progress indicator in passthru mode.
It worked for one input file since the counters are zero when
xz starts but they weren't reset when starting a new file in
passthru mode. For example, if files A, B, and C are one byte each,
then "xz -dcvf A B C" would show file sizes as 1, 2, and 3 bytes
instead of 1, 1, and 1 byte.
2022-11-11 13:48:06 +02:00
Lasse Collin aa7fa9d960 xz: Add a comment why --to-stdout is not in --help.
It is on the man page still.
2022-11-11 13:48:06 +02:00
Lasse Collin ff49ff84a4 Docs: Update faq.txt a little. 2022-11-11 13:48:06 +02:00
Lasse Collin 3489565b75 liblzma: Update API docs about decoder flags. 2022-11-11 13:45:39 +02:00
Lasse Collin e493771080 liblzma: Fix a comment in auto_decoder.c. 2022-11-11 13:41:43 +02:00
Jia Tan d4674dfbb7 xz: Avoid a compiler warning in progress_speed() in message.c.
This should be smaller too since it avoids the string constants.
2022-11-11 13:41:43 +02:00
Lasse Collin 4ed56d32a9 Build: Clarify comment in configure.ac about SSE2. 2022-11-11 13:41:43 +02:00
Lasse Collin f930638797 Build: Remove obsolete commented-out lines from configure.ac. 2022-11-11 13:41:43 +02:00
Lasse Collin 6930f14733 Windows: Fix mythread_once() macro with Vista threads.
Don't call InitOnceComplete() if initialization was already done.

So far mythread_once() has been needed only when building
with --enable-small. windows/build.bash does this together
with --disable-threads so the Vista-specific mythread_once()
is never needed by those builds. VS project files or
CMake-builds don't support HAVE_SMALL builds at all.
2022-11-11 13:41:43 +02:00
Lasse Collin 1c8cbb5be3 CMake: Sync tuklib_cpucores.cmake with tuklib_cpucores.m4.
This was forgotten from commit 2611c4d905.
2022-11-11 13:41:43 +02:00
Lasse Collin fa9efb729b Build: Use AC_CONFIG_HEADERS instead of the ancient AC_CONFIG_HEADER.
We require Autoconf >= 2.69 and that has AC_CONFIG_HEADERS.

There is a warning about AC_PROG_CC_C99 being obsolete but
it cannot be removed because it is needed with Autoconf 2.69.
2022-11-11 13:41:43 +02:00
Lasse Collin b10ba4bf39 Build: Update m4/ax_pthread.m4 from Autoconf Archive. 2022-11-11 13:41:43 +02:00
Lasse Collin 01744b280c xz: Fix --single-stream with an empty .xz Stream.
Example:

    $ xz -dc --single-stream good-0-empty.xz
    xz: good-0-empty.xz: Internal error (bug)

The code, that is tries to catch some input file issues early,
didn't anticipate LZMA_STREAM_END which is possible in that
code only when --single-stream is used.
2022-11-11 13:38:34 +02:00
Lasse Collin a3e4606134 xz: Fix decompressor behavior if input uses an unsupported check type.
Now files with unsupported check will make xz display
a warning, set the exit status to 2 (unless --no-warn is used),
and then decompress the file normally. This is how it was
supposed to work since the beginning but this was broken by
the commit 231c3c7098, that is,
a little before 5.0.0 was released. The buggy behavior displayed
a message, set exit status 1 (error), and xz didn't attempt to
to decompress the file.

This doesn't matter today except for special builds that disable
CRC64 or SHA-256 at build time (but such builds should be used
in special situations only). The bug matters if new check type
is added in the future and an old xz version is used to decompress
such a file; however, it's likely that such files would use a new
filter too and an old xz wouldn't be able to decompress the file
anyway.

The first hunk in the commit is the actual fix. The second hunk
is a cleanup since LZMA_TELL_ANY_CHECK isn't used in xz.

There is a test file for unsupported check type but it wasn't
used by test_files.sh, perhaps due to different behavior between
xz and the simpler xzdec.
2022-11-11 13:38:34 +02:00
Lasse Collin 0b5e8c7e07 xz: Clarify the man page: input file isn't removed if an error occurs. 2022-11-11 13:30:44 +02:00
Lasse Collin 23b7416d5b xz: If input file cannot be removed, treat it as a warning, not error.
Treating it as a warning (message + exit status 2) matches gzip
and it seems more logical as at that point the output file has
already been successfully closed. When it's a warning it is
possible to suppress it with --no-warn.
2022-11-11 13:29:13 +02:00
Lasse Collin 5daa40454b tuklib_cpucores: Use HW_NCPUONLINE on OpenBSD.
On OpenBSD the number of cores online is often less
than what HW_NCPU would return because OpenBSD disables
simultaneous multi-threading (SMT) by default.

Thanks to Christian Weisgerber.
2022-11-11 13:28:56 +02:00
Lasse Collin 0af861050f NEWS: Omit the extra copy of 5.2.5 NEWS.
It was a copy-paste error.
2022-11-11 13:25:02 +02:00
Lasse Collin f0c6a66701 Translations: Rename poa4/fr_FR.po to po4a/fr.po.
That's how it is preferred at the Translation Project.
On my system /usr/share/man/fr_FR doesn't contain any
other man pages than XZ Utils while /usr/share/man/fr
has quite a few, so this will fix that too.

Thanks to Benno Schulenberg from the Translation Project.
2022-11-10 12:39:34 +02:00
Lasse Collin 6bf8b1f870 Translations: Update Turkish translation. 2022-11-08 16:57:17 +02:00
Lasse Collin 9f8e9d3c81 Translations: Update Croatian translation. 2022-11-08 14:55:32 +02:00
Lasse Collin d24a57b7fc Bump version and soname for 5.2.7. 2022-09-30 16:41:03 +03:00
Lasse Collin d2003362dd Add NEWS for 5.2.7. 2022-09-30 16:40:39 +03:00
Lasse Collin 369afb5199 liblzma: Add API doc note about the .xz decoder LZMA_MEMLIMIT_ERROR bug.
The bug was fixed in 660739f99a.
2022-09-30 12:20:46 +03:00
Jia Tan 166431e995 liblzma: Add dest and src NULL checks to lzma_index_cat.
The documentation states LZMA_PROG_ERROR can be returned from
lzma_index_cat. Previously, lzma_index_cat could not return
LZMA_PROG_ERROR. Now, the validation is similar to
lzma_index_append, which does a NULL check on the index
parameter.
2022-09-29 16:54:39 +03:00
Jia Tan 5e53a6c28b Tests: Create a test for the lzma_index_cat bug. 2022-09-29 16:54:39 +03:00
Jia Tan 4ed5fd54c6 liblzma: Fix copying of check type statistics in lzma_index_cat().
The check type of the last Stream in dest was never copied to
dest->checks (the code tried to copy it but it was done too late).
This meant that the value returned by lzma_index_checks() would
only include the check type of the last Stream when multiple
lzma_indexes had been concatenated.

In xz --list this meant that the summary would only list the
check type of the last Stream, so in this sense this was only
a visual bug. However, it's possible that some applications
use this information for purposes other than merely showing
it to the users in an informational message. I'm not aware of
such applications though and it's quite possible that such
applications don't exist.

Regular streamed decompression in xz or any other application
doesn't use lzma_index_cat() and so this bug cannot affect them.
2022-09-29 16:54:39 +03:00
Lasse Collin c4476f6952 tuklib_physmem: Fix Unicode builds on Windows.
Thanks to ArSaCiA Game.
2022-09-29 16:54:39 +03:00
Lasse Collin 976f897bbb liblzma: Stream decoder: Fix restarting after LZMA_MEMLIMIT_ERROR.
If lzma_code() returns LZMA_MEMLIMIT_ERROR it is now possible
to use lzma_memlimit_set() to increase the limit and continue
decoding. This was supposed to work from the beginning but
there was a bug. With other decoders (.lzma or threaded .xz)
this already worked correctly.
2022-09-29 16:54:39 +03:00
Lasse Collin 2caa9580e5 liblzma: Stream decoder: Fix comments. 2022-09-29 16:54:39 +03:00
Lasse Collin 51882fec5b Update THANKS. 2022-09-17 00:22:11 +03:00
Lasse Collin 974186f7cd xzgrep: Fix compatibility with old shells.
Running the current xzgrep on Slackware 10.1 with GNU bash 3.00.15:

    xzgrep: line 231: syntax error near unexpected token `;;'

On SCO OpenServer 5.0.7 with Korn Shell 93r:

    syntax error at line 231 : `;;' unexpected

Turns out that some old shells don't like apostrophes (') inside
command substitutions. For example, the following fails:

    x=$(echo foo
    # asdf'zxcv
    echo bar)
    printf '%s\n' "$x"

The problem was introduced by commits
69d1b3fc29 (2022-03-29),
bd7b290f3f (2022-07-18), and
a648978b20 (2022-07-19).
5.2.6 is the only stable release that included
this problem.

Thanks to Kevin R. Bulgrien for reporting the problem
on SCO OpenServer 5.0.7 and for providing the fix.
2022-09-17 00:22:11 +03:00
Lasse Collin f94da15120 liblzma: lzma_filters_copy: Keep dest[] unmodified if an error occurs.
lzma_stream_encoder() and lzma_stream_encoder_mt() always assumed
this. Before this patch, failing lzma_filters_copy() could result
in free(invalid_pointer) or invalid memory reads in stream_encoder.c
or stream_encoder_mt.c.

To trigger this, allocating memory for a filter options structure
has to fail. These are tiny allocations so in practice they very
rarely fail.

Certain badness in the filter chain array could also make
lzma_filters_copy() fail but both stream_encoder.c and
stream_encoder_mt.c validate the filter chain before
trying to copy it, so the crash cannot occur this way.
2022-09-17 00:22:11 +03:00
Lasse Collin ea57b9aa2c Tests: Add a test file for lzma_index_append() integer overflow bug.
This test fails before commit 18d7facd38.

test_files.sh now runs xz -l for bad-3-index-uncomp-overflow.xz
because only then the previously-buggy code path gets tested.
Normal decompression doesn't use lzma_index_append() at all.
Instead, lzma_index_hash functions are used and those already
did the overflow check.
2022-09-17 00:21:54 +03:00
Jia Tan 72e1645a43 liblzma: lzma_index_append: Add missing integer overflow check.
The documentation in src/liblzma/api/lzma/index.h suggests that
both the unpadded (compressed) size and the uncompressed size
are checked for overflow, but only the unpadded size was checked.
The uncompressed check is done first since that is more likely to
occur than the unpadded or index field size overflows.
2022-09-17 00:21:54 +03:00
Lasse Collin 20d82bc907 Update THANKS. 2022-09-16 19:45:54 +03:00
Lasse Collin 31d80c6b26 liblzma: Vaccinate against an ill patch from RHEL/CentOS 7.
RHEL/CentOS 7 shipped with 5.1.2alpha, including the threaded
encoder that is behind #ifdef LZMA_UNSTABLE in the API headers.
In 5.1.2alpha these symbols are under XZ_5.1.2alpha in liblzma.map.
API/ABI compatibility tracking isn't done between development
releases so newer releases didn't have XZ_5.1.2alpha anymore.

Later RHEL/CentOS 7 updated xz to 5.2.2 but they wanted to keep
the exported symbols compatible with 5.1.2alpha. After checking
the ABI changes it turned out that >= 5.2.0 ABI is backward
compatible with the threaded encoder functions from 5.1.2alpha
(but not vice versa as fixes and extensions to these functions
were made between 5.1.2alpha and 5.2.0).

In RHEL/CentOS 7, XZ Utils 5.2.2 was patched with
xz-5.2.2-compat-libs.patch to modify liblzma.map:

  - XZ_5.1.2alpha was added with lzma_stream_encoder_mt and
    lzma_stream_encoder_mt_memusage. This matched XZ Utils 5.1.2alpha.

  - XZ_5.2 was replaced with XZ_5.2.2. It is clear that this was
    an error; the intention was to keep using XZ_5.2 (XZ_5.2.2
    has never been used in XZ Utils). So XZ_5.2.2 lists all
    symbols that were listed under XZ_5.2 before the patch.
    lzma_stream_encoder_mt and _mt_memusage are included too so
    they are listed both here and under XZ_5.1.2alpha.

The patch didn't add any __asm__(".symver ...") lines to the .c
files. Thus the resulting liblzma.so exports the threaded encoder
functions under XZ_5.1.2alpha only. Listing the two functions
also under XZ_5.2.2 in liblzma.map has no effect without
matching .symver lines.

The lack of XZ_5.2 in RHEL/CentOS 7 means that binaries linked
against unpatched XZ Utils 5.2.x won't run on RHEL/CentOS 7.
This is unfortunate but this alone isn't too bad as the problem
is contained within RHEL/CentOS 7 and doesn't affect users
of other distributions. It could also be fixed internally in
RHEL/CentOS 7.

The second problem is more serious: In XZ Utils 5.2.2 the API
headers don't have #ifdef LZMA_UNSTABLE for obvious reasons.
This is true in RHEL/CentOS 7 version too. Thus now programs
using new APIs can be compiled without an extra #define. However,
the programs end up depending on symbol version XZ_5.1.2alpha
(and possibly also XZ_5.2.2) instead of XZ_5.2 as they would
with an unpatched XZ Utils 5.2.2. This means that such binaries
won't run on other distributions shipping XZ Utils >= 5.2.0 as
they don't provide XZ_5.1.2alpha or XZ_5.2.2; they only provide
XZ_5.2 (and XZ_5.0). (This includes RHEL/CentOS 8 as the patch
luckily isn't included there anymore with XZ Utils 5.2.4.)

Binaries built by RHEL/CentOS 7 users get distributed and then
people wonder why they don't run on some other distribution.
Seems that people have found out about the patch and been copying
it to some build scripts, seemingly curing the symptoms but
actually spreading the illness further and outside RHEL/CentOS 7.

The ill patch seems to be from late 2016 (RHEL 7.3) and in 2017 it
had spread at least to EasyBuild. I heard about the events only
recently. :-(

This commit splits liblzma.map into two versions: one for
GNU/Linux and another for other OSes that can use symbol versioning
(FreeBSD, Solaris, maybe others). The Linux-specific file and the
matching additions to .c files add full compatibility with binaries
that have been built against a RHEL/CentOS-patched liblzma. Builds
for OSes other than GNU/Linux won't get the vaccine as they should
be immune to the problem (I really hope that no build script uses
the RHEL/CentOS 7 patch outside GNU/Linux).

The RHEL/CentOS compatibility symbols XZ_5.1.2alpha and XZ_5.2.2
are intentionally put *after* XZ_5.2 in liblzma_linux.map. This way
if one forgets to #define HAVE_SYMBOL_VERSIONS_LINUX when building,
the resulting liblzma.so.5 will have lzma_stream_encoder_mt@@XZ_5.2
since XZ_5.2 {...} is the first one that lists that function.
Without HAVE_SYMBOL_VERSIONS_LINUX @XZ_5.1.2alpha and @XZ_5.2.2
will be missing but that's still a minor problem compared to
only having lzma_stream_encoder_mt@@XZ_5.1.2alpha!

The "local: *;" line was moved to XZ_5.0 so that it doesn't need
to be moved around. It doesn't matter where it is put.

Having two similar liblzma_*.map files is a bit silly as it is,
at least for now, easily possible to generate the generic one
from the Linux-specific file. But that adds extra steps and
increases the risk of mistakes when supporting more than one
build system. So I rather maintain two files in parallel and let
validate_map.sh check that they are in sync when "make mydist"
is run.

This adds .symver lines for lzma_stream_encoder_mt@XZ_5.2.2 and
lzma_stream_encoder_mt_memusage@XZ_5.2.2 even though these
weren't exported by RHEL/CentOS 7 (only @@XZ_5.1.2alpha was
for these two). I added these anyway because someone might
misunderstand the RHEL/CentOS 7 patch and think that @XZ_5.2.2
(@@XZ_5.2.2) versions were exported too.

At glance one could suggest using __typeof__ to copy the function
prototypes when making aliases. However, this doesn't work trivially
because __typeof__ won't copy attributes (lzma_nothrow, lzma_pure)
and it won't change symbol visibility from hidden to default (done
by LZMA_API()). Attributes could be copied with __copy__ attribute
but that needs GCC 9 and a fallback method would be needed anyway.

This uses __symver__ attribute with GCC >= 10 and
__asm__(".symver ...") with everything else. The attribute method
is required for LTO (-flto) support with GCC. Using -flto with
GCC older than 10 is now broken on GNU/Linux and will not be fixed
(can silently result in a broken liblzma build that has dangerously
incorrect symbol versions). LTO builds with Clang seem to work
with the traditional __asm__(".symver ...") method.

Thanks to Boud Roukema for reporting the problem and discussing
the details and testing the fix.
2022-09-16 19:30:05 +03:00
Jia Tan e7a7ac744e CMake: Clarify a comment about Windows symlinks without file extension. 2022-09-16 15:32:55 +03:00
Lasse Collin a273a0cb77 CMake: Update for liblzma_*.map files and fix wrong common_w32res.rc dep.
The previous commit split liblzma.map into liblzma_linux.map and
liblzma_generic.map. This commit updates the CMake build for those.

common_w32res.rc dependency was listed under Linux/FreeBSD while
obviously it belongs to Windows when building a DLL.
2022-09-16 15:32:55 +03:00
Lasse Collin 5875a45be0 CMake: Add xz symlinks.
These are a minor thing especially since the xz build has
some real problems still like lack of large file support
on 32-bit systems but I'll commit this since the code exists.

Thanks to Jia Tan.
2022-09-16 15:32:55 +03:00
Lasse Collin 3523b6ebb5 CMake: Put xz man page install under if(UNIX) like is for xzdec.
Thanks to Jia Tan.
2022-09-16 15:32:55 +03:00
Lasse Collin 5af9e8759f Translations: Add Turkish translation. 2022-09-16 15:10:07 +03:00
Lasse Collin f05a69685e Build: Include the CMake files in the distribution.
This was supposed to be done in 2020 with 5.2.5 release
already but it was noticed only today. 5.2.5 and 5.2.6
even mention experiemental CMake support in the NEWS entries.

Thanks to Olivier B. for reporting the problem.
2022-08-18 17:51:07 +03:00
Lasse Collin ad5ef6d3c3 Windows: Fix broken liblzma.dll build with Visual Studio project files.
The bug was introduced in 352ba2d69a
"Windows: Fix building of resource files when config.h isn't used."

That commit fixed liblzma.dll build with CMake while keeping it
working with Autotools on Windows but the VS project files were
forgotten.

I haven't tested these changes.

Thanks to Olivier B. for reporting the bug and for the initial patch.
2022-08-18 17:51:07 +03:00
Lasse Collin 8dfed05bda Bump version and soname for 5.2.6. 2022-08-12 14:30:13 +03:00
Lasse Collin 09b4af4e04 Add NEWS for 5.2.6. 2022-08-12 14:29:28 +03:00
Lasse Collin 692de534fa Add Jia Tan to AUTHORS. 2022-08-12 14:29:08 +03:00
Lasse Collin 275de376a6 Translations: Change the copyright comment string to use with po4a.
This affects the second line in po4a/xz-man.pot. The man pages of
xzdiff, xzgrep, and xzmore are from GNU gzip and under GNU GPLv2+
while the rest of the man pages are in the public domain.
2022-07-25 19:11:17 +03:00
Jia Tan 76a5a752b8 liblzma: Refactor lzma_mf_is_supported() to use a switch-statement. 2022-07-25 18:36:49 +03:00
Jia Tan 749b86c2c1 Build: Don't allow empty LIST in --enable-match-finders=LIST.
It's enforced only when a match finder is needed, that is,
when LZMA1 or LZMA2 encoder is enabled.
2022-07-25 18:36:49 +03:00
Lasse Collin 63e3cdef80 xz: Make --keep accept symlinks, hardlinks, and setuid/setgid/sticky.
Previously this required using --force but that has other
effects too which might be undesirable. Changing the behavior
of --keep has a small risk of breaking existing scripts but
since this is a fairly special corner case I expect the
likehood of breakage to be low enough.

I think the new behavior is more logical. The only reason for
the old behavior was to be consistent with gzip and bzip2.

Thanks to Vincent Lefevre and Sebastian Andrzej Siewior.
2022-07-24 13:29:42 +03:00
Lasse Collin 9055584be0 xzgrep man page: Document exit statuses. 2022-07-24 11:38:19 +03:00
Lasse Collin 57e1ccbb7c xzgrep: Improve error handling, especially signals.
xzgrep wouldn't exit on SIGPIPE or SIGQUIT when it clearly
should have. It's quite possible that it's not perfect still
but at least it's much better.

If multiple exit statuses compete, now it tries to pick
the largest of value.

Some comments were added.

The exit status handling of signals is still broken if the shell
uses values larger than 255 in $? to indicate that a process
died due to a signal ***and*** their "exit" command doesn't take
this into account. This seems to work well with the ksh and yash
versions I tried. However, there is a report in gzip/zgrep that
OpenSolaris 5.11 (not 5.10) has a problem with "exit" truncating
the argument to 8 bits:

    https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22900#25

Such a bug would break xzgrep but I didn't add a workaround
at least for now. 5.11 is old and I don't know if the problem
exists in modern descendants, or if the problem exists in other
ksh implementations in use.
2022-07-24 11:38:19 +03:00
Lasse Collin 6351ea1afb xzgrep: Make the fix for ZDI-CAN-16587 more robust.
I don't know if this can make a difference in the real world
but it looked kind of suspicious (what happens with sed
implementations that cannot process very long lines?).
At least this commit shouldn't make it worse.
2022-07-24 11:38:19 +03:00
Lasse Collin 2c1ff2ed6b xzgrep: Use grep -H --label when available (GNU, *BSDs).
It avoids the use of sed for prefixing filenames to output lines.
Using sed for that is slower and prone to security bugs so now
the sed method is only used as a fallback.

This also fixes an actual bug: When grepping a binary file,
GNU grep nowadays prints its diagnostics to stderr instead of
stdout and thus the sed-method for prefixing the filename doesn't
work. So with this commit grepping binary files gives reasonable
output with GNU grep now.

This was inspired by zgrep but the implementation is different.
2022-07-24 11:38:19 +03:00
Lasse Collin 8b0be38a79 xzgrep: Use -e to specify the pattern to grep.
Now we don't need the separate test for adding the -q option
as it can be added directly in the two places where it's needed.
2022-07-24 11:38:19 +03:00
Lasse Collin 4a61867a87 Scripts: Use printf instead of echo in a few places.
It's a good habbit as echo has some portability corner cases
when the string contents can be anything.
2022-07-24 11:38:19 +03:00
Lasse Collin 0e222bf7d7 xzgrep: Add more LC_ALL=C to avoid bugs with multibyte characters.
Also replace one use of expr with printf.

The rationale for LC_ALL=C was already mentioned in
69d1b3fc29 that fixed a security
issue. However, unrelated uses weren't changed in that commit yet.

POSIX says that with sed and such tools one should use LC_ALL=C
to ensure predictable behavior when strings contain byte sequences
that aren't valid multibyte characters in the current locale. See
under "Application usage" in here:

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html

With GNU sed invalid multibyte strings would work without this;
it's documented in its Texinfo manual. Some other implementations
aren't so forgiving.
2022-07-24 11:38:19 +03:00
Lasse Collin 62c1d2bc2d xzgrep: Fix parsing of certain options.
Fix handling of "xzgrep -25 foo" (in GNU grep "grep -25 foo" is
an alias for "grep -C25 foo"). xzgrep would treat "foo" as filename
instead of as a pattern. This bug was fixed in zgrep in gzip in 2012.

Add -E, -F, -G, and -P to the "no argument required" list.

Add -X to "argument required" list. It is an
intentionally-undocumented GNU grep option so this isn't
an important option for xzgrep but it seems that other grep
implementations (well, those that I checked) don't support -X
so I hope this change is an improvement still.

grep -d (grep --directories=ACTION) requires an argument. In
contrast to zgrep, I kept -d in the "no argument required" list
because it's not supported in xzgrep (or zgrep). This way
"xzgrep -d" gives an error about option being unsupported instead
of telling that it requires an argument. Both zgrep and xzgrep
tell that it's unsupported if an argument is specified.

Add comments.
2022-07-24 11:38:19 +03:00
Lasse Collin 372a0d12c9 Tests: Add the .lzma files to test_files.sh. 2022-07-24 11:37:44 +03:00
Lasse Collin b8e3d0c45b Tests: Add .lzma test files. 2022-07-24 11:37:44 +03:00
Lasse Collin e96bdf7189 liblzma: Rename a variable and improve a comment. 2022-07-24 11:37:44 +03:00
Lasse Collin 2d54fdf58e Update THANKS. 2022-07-24 11:37:44 +03:00
Lasse Collin ff54b557fe liblzma: Add optional autodetection of LZMA end marker.
Turns out that this is needed for .lzma files as the spec in
LZMA SDK says that end marker may be present even if the size
is stored in the header. Such files are rare but exist in the
real world. The code in liblzma is so old that the spec didn't
exist in LZMA SDK back then and I had understood that such
files weren't possible (the lzma tool in LZMA SDK didn't
create such files).

This modifies the internal API so that LZMA decoder can be told
if EOPM is allowed even when the uncompressed size is known.
It's allowed with .lzma and not with other uses.

Thanks to Karl Beldan for reporting the problem.
2022-07-24 11:36:56 +03:00
Lasse Collin bb795fe835 Tests: Add test file good-1-empty-bcj-lzma2.xz.
This is from test_bcj_exact_size.c.
It's good to have it as a standalone file.
2022-07-24 11:32:15 +03:00
Lasse Collin dbd8b0bf45 Update THANKS. 2022-07-12 19:47:34 +03:00
Lasse Collin bb66a98ded xzgrep: Fix escaping of malicious filenames (ZDI-CAN-16587).
Malicious filenames can make xzgrep to write to arbitrary files
or (with a GNU sed extension) lead to arbitrary code execution.

xzgrep from XZ Utils versions up to and including 5.2.5 are
affected. 5.3.1alpha and 5.3.2alpha are affected as well.
This patch works for all of them.

This bug was inherited from gzip's zgrep. gzip 1.12 includes
a fix for zgrep.

The issue with the old sed script is that with multiple newlines,
the N-command will read the second line of input, then the
s-commands will be skipped because it's not the end of the
file yet, then a new sed cycle starts and the pattern space
is printed and emptied. So only the last line or two get escaped.

One way to fix this would be to read all lines into the pattern
space first. However, the included fix is even simpler: All lines
except the last line get a backslash appended at the end. To ensure
that shell command substitution doesn't eat a possible trailing
newline, a colon is appended to the filename before escaping.
The colon is later used to separate the filename from the grep
output so it is fine to add it here instead of a few lines later.

The old code also wasn't POSIX compliant as it used \n in the
replacement section of the s-command. Using \<newline> is the
POSIX compatible method.

LC_ALL=C was added to the two critical sed commands. POSIX sed
manual recommends it when using sed to manipulate pathnames
because in other locales invalid multibyte sequences might
cause issues with some sed implementations. In case of GNU sed,
these particular sed scripts wouldn't have such problems but some
other scripts could have, see:

    info '(sed)Locale Considerations'

This vulnerability was discovered by:
cleemy desu wayo working with Trend Micro Zero Day Initiative

Thanks to Jim Meyering and Paul Eggert discussing the different
ways to fix this and for coordinating the patch release schedule
with gzip.
2022-07-12 19:47:28 +03:00
Lasse Collin fa3af4e4c6 Update THANKS. 2022-07-12 19:45:26 +03:00
Lasse Collin f12ce0f23a liblzma: Fix docs: lzma_block_decoder() cannot return LZMA_UNSUPPORTED_CHECK.
If Check is unsupported, it will be silently ignored.
It's the caller's job to handle it.
2022-07-12 19:30:40 +03:00
Lasse Collin 4125667311 liblzma: Index hash: Change return value type of hash_append() to void. 2022-07-12 19:30:40 +03:00
Lasse Collin 7c3ce02df0 liblzma: Minor addition to lzma_vli_size() API doc.
Thanks to Jia Tan.
2022-07-12 19:30:40 +03:00
Lasse Collin b8f667fe0c liblzma: Check the return value of lzma_index_append() in threaded encoder.
If lzma_index_append() failed (most likely memory allocation failure)
it could have gone unnoticed and the resulting .xz file would have
an incorrect Index. Decompressing such a file would produce the
correct uncompressed data but then an error would occur when
verifying the Index field.
2022-07-12 19:30:40 +03:00
Lasse Collin 2356d53edd Update THANKS. 2022-07-12 19:30:40 +03:00
Ed Maste 748ef08338 liblzma: Use non-executable stack on FreeBSD as on Linux 2022-07-12 19:30:40 +03:00
Lasse Collin 068a6e3286 liblzma: Make Block decoder catch certain types of errors better.
Now it limits the input and output buffer sizes that are
passed to a raw decoder. This way there's no need to check
if the sizes can grow too big or overflow when updating
Compressed Size and Uncompressed Size counts. This also means
that a corrupt file cannot cause the raw decoder to process
useless extra input or output that would exceed the size info
in Block Header (and thus cause LZMA_DATA_ERROR anyway).

More importantly, now the size information is verified more
carefully in case raw decoder returns LZMA_OK. This doesn't
really matter with the current single-threaded .xz decoder
as the errors would be detected slightly later anyway. But
this helps avoiding corner cases in the upcoming threaded
decompressor, and it might help other Block decoder uses
outside liblzma too.

The test files bad-1-lzma2-{9,10,11}.xz test these conditions.
With the single-threaded .xz decoder the only difference is
that LZMA_DATA_ERROR is detected in a difference place now.
2022-07-12 19:30:40 +03:00
Lasse Collin 766df4f62c Tests: Add bad-1-lzma2-11.xz. 2022-07-12 19:30:40 +03:00
Lasse Collin 12a6d6ce2a Translations: Fix po4a failure with the French man page translations.
Thanks to Mario Blättermann for the patch.
2022-07-12 19:30:40 +03:00
Lasse Collin 00e6aad836 Translations: Add French translation of man pages.
This matches xz-utils 5.2.5-2 in Debian.

The translation was done by "bubu", proofread by the debian-l10n-french
mailing list contributors, and submitted to me on the xz-devel mailing
list by Jean-Pierre Giraud. Thanks to everyone!
2022-07-12 19:30:40 +03:00
jiat75 e20ce2b122 liblzma: Add NULL checks to LZMA and LZMA2 properties encoders.
Previously lzma_lzma_props_encode() and lzma_lzma2_props_encode()
assumed that the options pointers must be non-NULL because the
with these filters the API says it must never be NULL. It is
good to do these checks anyway.
2022-07-12 19:03:51 +03:00
huangqinjin feb80ace86 CMake: Keep compatible with Windows 95 for 32-bit build. 2022-07-12 19:03:51 +03:00
Lasse Collin 725f2e0522 xzgrep: Update man page timestamp. 2022-07-12 19:01:09 +03:00
Lasse Collin 7955669d42 Update THANKS. 2022-07-12 19:01:09 +03:00
Ville Skyttä 671673a7a2 xzgrep: use `grep -E/-F` instead of `egrep` and `fgrep`
`egrep` and `fgrep` have been deprecated in GNU grep since 2007, and in
current post 3.7 Git they have been made to emit obsolescence warnings:
https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1
2022-07-12 19:01:09 +03:00
Lasse Collin 45e538257e Update THANKS. 2022-07-12 19:01:09 +03:00
Lasse Collin ca21733d24 xz: Change the coding style of the previous commit.
It isn't any better now but it's consistent with
the rest of the code base.
2022-07-12 19:01:09 +03:00
Alexander Bluhm 906b990b15 xz: Avoid fchown(2) failure.
OpenBSD does not allow to change the group of a file if the user
does not belong to this group.  In contrast to Linux, OpenBSD also
fails if the new group is the same as the old one.  Do not call
fchown(2) in this case, it would change nothing anyway.

This fixes an issue with Perl Alien::Build module.
https://github.com/PerlAlien/Alien-Build/issues/62
2022-07-12 19:01:09 +03:00
Lasse Collin ca83df96c4 Update THANKS. 2022-07-12 19:01:09 +03:00
Lasse Collin d8b294af03 liblzma: Use _MSVC_LANG to detect when "noexcept" can be used with MSVC.
By default, MSVC always sets __cplusplus to 199711L. The real
C++ standard version is available in _MSVC_LANG (or one could
use /Zc:__cplusplus to set __cplusplus correctly).

Fixes <https://sourceforge.net/p/lzmautils/discussion/708858/thread/f6bc3b108a/>.

Thanks to Dan Weiss.
2022-07-12 19:01:09 +03:00
Lasse Collin c2fde22bef xzdiff: Update the man page about the exit status.
This was forgotten from 194029ffaf.
2022-07-12 19:01:09 +03:00
Lasse Collin 8d0fd42fbe xzless: Fix less(1) version detection when it contains a dot.
Sometimes the version number from "less -V" contains a dot,
sometimes not. xzless failed detect the version number when
it does contain a dot. This fixes it.

Thanks to nick87720z for reporting this. Apparently it had been
reported here <https://bugs.gentoo.org/489362> in 2013.
2022-07-12 19:01:09 +03:00
Lasse Collin 6e2cab8579 xz: Document the special memlimit case of 2000 MiB on MIPS32.
See commit 95806a8a52.
2022-07-12 18:57:21 +03:00
Lasse Collin 38b311462b Update THANKS. 2022-07-12 18:53:41 +03:00
Ivan A. Melnikov 95806a8a52 Reduce maximum possible memory limit on MIPS32
Due to architectural limitations, address space available to a single
userspace process on MIPS32 is limited to 2 GiB, not 4, even on systems
that have more physical RAM -- e.g. 64-bit systems with 32-bit
userspace, or systems that use XPA (an extension similar to x86's PAE).

So, for MIPS32, we have to impose stronger memory limits. I've chosen
2000MiB to give the process some headroom.
2022-07-12 18:53:41 +03:00
Lasse Collin a79bd30a6f CMake: Use interface library for better FindLibLZMA compatibility.
https://www.mail-archive.com/xz-devel@tukaani.org/msg00446.html

Thanks to Markus Rickert.
2022-07-12 18:44:47 +03:00
Lasse Collin 64d9814761 CMake: Try to improve compatibility with the FindLibLZMA module.
The naming conflict with FindLibLZMA module gets worse.
Not avoiding it in the first place was stupid.

Normally find_package(LibLZMA) will use the module and
find_package(liblzma 5.2.5 REQUIRED CONFIG) will use the config
file even with a case insensitive file system. However, if
CMAKE_FIND_PACKAGE_PREFER_CONFIG is TRUE and the file system
is case insensitive, find_package(LibLZMA) will find our liblzma
config file instead of using FindLibLZMA module.

One big problem with this is that FindLibLZMA uses
LibLZMA::LibLZMA and we use liblzma::liblzma as the target
name. With target names CMake happens to be case sensitive.
To workaround this, this commit adds

    add_library(LibLZMA::LibLZMA ALIAS liblzma::liblzma)

to the config file. Then both spellings work.

To make the behavior consistent between case sensitive and
insensitive file systems, the config and related files are
renamed from liblzmaConfig.cmake to liblzma-config.cmake style.
With this style CMake looks for lowercase version of the package
name so find_package(LiBLzmA 5.2.5 REQUIRED CONFIG) will work
to find our config file.

There are other differences between our config file and
FindLibLZMA so it's still possible that things break for
reasons other than the spelling of the target name. Hopefully
those situations aren't too common.

When the config file is available, it should always give as good or
better results as FindLibLZMA so this commit doesn't affect the
recommendation to use find_package(liblzma 5.2.5 REQUIRED CONFIG)
which explicitly avoids FindLibLZMA.

Thanks to Markus Rickert.
2022-07-12 18:44:47 +03:00
Lasse Collin 9e2f9e2d08 Tests: Add bad-1-lzma2-10.xz and also modify -9.xz. 2022-07-12 18:44:13 +03:00
Lasse Collin 00a4c69bbb Tests: Add bad-1-lzma2-9.xz. 2022-07-12 18:43:50 +03:00
Lasse Collin 1da2269b2e Tests: Add bad-1-check-crc32-2.xz. 2022-07-12 18:43:50 +03:00
Lasse Collin 11ceecb5e2 Scripts: Add zstd support to xzdiff. 2022-07-12 18:42:21 +03:00
Lasse Collin d655b8c9cb Scripts: Fix exit status of xzgrep.
Omit the -q option from xz, gzip, and bzip2. With xz this shouldn't
matter. With gzip it's important because -q makes gzip replace SIGPIPE
with exit status 2. With bzip2 it's important because with -q bzip2
is completely silent if input is corrupt while other decompressors
still give an error message.

Avoiding exit status 2 from gzip is important because bzip2 uses
exit status 2 to indicate corrupt input. Before this commit xzgrep
didn't recognize corrupt .bz2 files because xzgrep was treating
exit status 2 as SIGPIPE for gzip compatibility.

zstd still needs -q because otherwise it is noisy in normal
operation.

The code to detect real SIGPIPE didn't check if the exit status
was due to a signal (>= 128) and so could ignore some other exit
status too.
2022-07-12 18:30:56 +03:00
Lasse Collin 09c331b03c Scripts: Fix exit status of xzdiff/xzcmp.
This is a minor fix since this affects only the situation when
the files differ and the exit status is something else than 0.
In such case there could be SIGPIPE from a decompression tool
and that would result in exit status of 2 from xzdiff/xzcmp
while the correct behavior would be to return 1 or whatever
else diff or cmp may have returned.

This commit omits the -q option from xz/gzip/bzip2/lzop arguments.
I'm not sure why the -q was used in the first place, perhaps it
hides warnings in some situation that I cannot see at the moment.
Hopefully the removal won't introduce a new bug.

With gzip the -q option was harmful because it made gzip return 2
instead of >= 128 with SIGPIPE. Ignoring exit status 2 (warning
from gzip) isn't practical because bzip2 uses exit status 2 to
indicate corrupt input file. It's better if SIGPIPE results in
exit status >= 128.

With bzip2 the removal of -q seems to be good because with -q
it prints nothing if input is corrupt. The other tools aren't
silent in this situation even with -q. On the other hand, if
zstd support is added, it will need -q since otherwise it's
noisy in normal situations.

Thanks to Étienne Mollier and Sebastian Andrzej Siewior.
2022-07-12 18:30:56 +03:00
Lasse Collin b33a345cba Update THANKS. 2022-07-12 18:30:56 +03:00
H.J. Lu c01e29a933 liblzma: Enable Intel CET in x86 CRC assembly codes
When Intel CET is enabled, we need to include <cet.h> in assembly codes
to mark Intel CET support and add _CET_ENDBR to indirect jump targets.

Tested on Intel Tiger Lake under CET enabled Linux.
2022-07-12 18:30:56 +03:00
Lasse Collin 0983682f87 Update THANKS. 2022-07-12 18:30:56 +03:00
Lasse Collin 880596e4b8 Build: Don't build bundles on Apple OSes.
Thanks to Daniel Packard.
2022-07-12 18:30:56 +03:00
Lasse Collin 29050c79f1 Update THANKS. 2022-07-12 18:30:56 +03:00
Adam Borowski 94fd724749 Scripts: Add zstd support to xzgrep.
Thanks to Adam Borowski.
2022-07-12 18:30:56 +03:00
Lasse Collin 13c58ac13e CMake: Fix compatibility with CMake 3.13.
The syntax "if(DEFINED CACHE{FOO})" requires CMake 3.14.
In some other places the code treats the cache variables
like normal variables already (${FOO} or if(FOO) is used,
not ${CACHE{FOO}).

Thanks to ygrek for reporting the bug on IRC.
2022-07-12 18:11:36 +03:00
Lasse Collin 8f7d3345a7 Update THANKS. 2022-07-12 18:10:08 +03:00
Lasse Collin ca7bcdb30f xz: Avoid unneeded \f escapes on the man page.
I don't want to use \c in macro arguments but groff_man(7)
suggests that \f has better portability. \f would be needed
for the .TP strings for portability reasons anyway.

Thanks to Bjarni Ingi Gislason.
2022-07-12 18:10:08 +03:00
Lasse Collin 3b40a0792e xz: Use non-breaking spaces when intentionally using more than one space.
This silences some style checker warnings. Seems that spaces
in the beginning of a line don't need this treatment.

Thanks to Bjarni Ingi Gislason.
2022-07-12 18:10:08 +03:00
Lasse Collin d85699c36d xz: Protect the ellipsis (...) on the man page with \&.
This does it only when ... appears outside macro calls.

Thanks to Bjarni Ingi Gislason.
2022-07-12 18:10:08 +03:00
Lasse Collin d996ae6617 xz: Avoid the abbreviation "e.g." on the man page.
A few are simply omitted, most are converted to "for example"
and surrounded with commas. Sounds like that this is better
style, for example, man-pages(7) recommends avoiding such
abbreviations except in parenthesis.

Thanks to Bjarni Ingi Gislason.
2022-07-12 18:09:21 +03:00
Lasse Collin d16d0d198a xz man page: Change \- (minus) to \(en (en-dash) for a numeric range.
Docs of ancient troff/nroff mention \(em (em-dash) but not \(en
and \- was used for both minus and en-dash. I don't know how
portable \(en is nowadays but it can be changed back if someone
complains. At least GNU groff and OpenBSD's mandoc support it.

Thanks to Bjarni Ingi Gislason for the patch.
2022-07-12 18:09:21 +03:00
Lasse Collin 3acf1adfc7 Windows: Fix building of resource files when config.h isn't used.
Now CMake + Visual Studio works for building liblzma.dll.

Thanks to Markus Rickert.
2022-07-12 18:09:21 +03:00
Lasse Collin adba06e649 src/scripts/xzgrep.1: Filenames to xzgrep are optional.
xzgrep --help was correct already.
2022-07-12 18:09:21 +03:00
Lasse Collin 7be1dcf858 Translations: Add Portuguese translation.
Jia Tan made white-space changes and also changed "Language: pt_BR\n"
to pt. The translator wasn't reached so I'm hoping these changes
are OK and will commit it without translator's approval.

Thanks to Pedro Albuquerque and Jia Tan.
2022-07-12 17:59:41 +03:00
Bjarni Ingi Gislason 3f94d2a568 src/script/xzgrep.1: Remove superfluous '.RB'
Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z

  [ "test-groff" is a developmental version of "groff" ]

Input file is ./src/scripts/xzgrep.1

<src/scripts/xzgrep.1>:20 (macro RB): only 1 argument, but more are expected
<src/scripts/xzgrep.1>:23 (macro RB): only 1 argument, but more are expected
<src/scripts/xzgrep.1>:26 (macro RB): only 1 argument, but more are expected
<src/scripts/xzgrep.1>:29 (macro RB): only 1 argument, but more are expected
<src/scripts/xzgrep.1>:32 (macro RB): only 1 argument, but more are expected

 "abc..." does not mean the same as "abc ...".

  The output from nroff and troff is unchanged except for the space
between "file" and "...".

Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
2022-07-12 17:42:59 +03:00
Bjarni Ingi Gislason 725d9791c9 xzgrep.1: Delete superfluous '.PP'
Summary:

mandoc -T lint xzgrep.1 :
mandoc: xzgrep.1:79:2: WARNING: skipping paragraph macro: PP empty

  There is no change in the output of "nroff" and "troff".

Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
2022-07-12 17:42:59 +03:00
Bjarni Ingi Gislason 55c2555c5d src/xz/xz.1: Correct misused two-fonts macros
Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z

  [ "test-groff" is a developmental version of "groff" ]

Input file is ./src/xz/xz.1

<src/xz/xz.1>:408 (macro BR): only 1 argument, but more are expected
<src/xz/xz.1>:1009 (macro BR): only 1 argument, but more are expected
<src/xz/xz.1>:1743 (macro BR): only 1 argument, but more are expected
<src/xz/xz.1>:1920 (macro BR): only 1 argument, but more are expected
<src/xz/xz.1>:2213 (macro BR): only 1 argument, but more are expected

  Output from nroff and troff is unchanged, except for a font change of a
full stop (.).

Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
2022-07-12 17:42:59 +03:00
Lasse Collin 55e3a8e0e4 Translations: Add Serbian translation.
Quite a few white-space changes were made by Jia Tan to make
this look good. Contacting the translator didn't succeed so
I'm committing this without getting translator's approval.

Thanks to Мирослав Николић (Miroslav Nikolic) and Jia Tan.
2022-07-10 21:16:40 +03:00
Lasse Collin 4e04279cbe Translations: Add Swedish translation.
Thanks to Sebastian Rasmussen and Jia Tan.
2022-07-04 23:51:36 +03:00
Lasse Collin 27f55e96b0 Translations: Add Esperanto translation.
Thanks to Keith Bowes and Jia Tan.
2022-07-04 23:40:27 +03:00
Lasse Collin be31be9e8f Translations: Add Catalan translation.
Thanks to Jordi Mas and Jia Tan.
2022-07-01 00:22:33 +03:00
Lasse Collin 30e3ad040f Translations: Add Ukrainian translation.
Thanks to Yuri Chornoivan and Jia Tan.
2022-06-30 17:47:08 +03:00
Lasse Collin f2e2cce49f Translators: Add Romanian translation.
Thanks to Remus-Gabriel Chelu and Jia Tan.
2022-06-30 17:45:26 +03:00
Lasse Collin a12fd5bad2 Translations: Update Brazilian Portuguese translation.
One msgstr was changed. The diff is long due to changes
in the source code line numbers in the comments.

Thanks to Rafael Fontenelle.
2022-06-29 18:33:32 +03:00
Lasse Collin dd713288d2 Translations: Add Croatian translation.
Thanks to Božidar Putanec and Jia Tan.
2022-06-29 18:04:44 +03:00
Lasse Collin 016980f269 Translations: Add Spanish translation.
Thanks to Cristian Othón Martínez Vera and Jia Tan.
2022-06-29 17:58:48 +03:00
Lasse Collin 4fe9578c3a Translations: Add Korean translation.
Thanks to Seong-ho Cho and Jia Tan.
2022-06-29 17:49:43 +03:00
Lasse Collin cf1ec5518e v5.2-specific typo fix from fossies.org. 2020-03-23 18:09:40 +02:00
Lasse Collin 968bbfea09 Typo fixes from fossies.org.
https://fossies.org/linux/misc/xz-5.2.5.tar.xz/codespell.html
2020-03-23 18:08:31 +02:00
Lasse Collin 2327a461e1 Bump version and soname for 5.2.5. 2020-03-17 16:27:42 +02:00
Lasse Collin 3be82d2f7d Update NEWS for 5.2.5. 2020-03-17 16:26:04 +02:00
Lasse Collin ab3e57539c 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.
2020-03-16 21:57:21 +02:00
Lasse Collin 3a6f38309d README: Update outdated sections. 2020-03-16 20:01:47 +02:00
Lasse Collin 9cc0901798 README: Mention that translatable strings will change after 5.2.x. 2020-03-16 19:46:27 +02:00
Lasse Collin cc16357424 README: Mention that man pages can be translated. 2020-03-16 19:39:56 +02:00
Lasse Collin ca261994ed Translations: Add partial Danish translation.
I made a few minor white space changes without getting them
approved by the Danish translation team.
2020-03-16 17:30:39 +02:00
Lasse Collin 51cd5d051f Update INSTALL.generic from Automake 1.16.1. 2020-03-16 16:43:45 +02:00
Lasse Collin 69d694e5f1 Update INSTALL for Windows and DOS and add preliminary info for z/OS. 2020-03-15 18:18:29 +02:00
Lasse Collin 2c3b1bb80a Build: Update m4/ax_pthread.m4 from Autoconf Archive (again). 2020-03-15 18:18:29 +02:00
Lasse Collin 74a5af180a 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.
2020-03-11 22:38:25 +02:00
Lasse Collin ceba0d25e8 DOS: Update dos/Makefile for DJGPP 2.05.
It doesn't need -fgnu89-inline like 2.04beta did.
2020-03-11 22:38:25 +02:00
Lasse Collin 29e5bd7161 DOS: Update instructions in dos/INSTALL.txt. 2020-03-11 22:38:25 +02:00
Lasse Collin 00a037ee9c DOS: Update config.h.
The added defines assume GCC >= 4.8.
2020-03-11 22:38:25 +02:00
Lasse Collin 4ec2feaefa 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.)
2020-03-11 22:37:54 +02:00
Lasse Collin b6ed09729a Translations: Update vi.po to match the file from the TP.
The translated strings haven't been updated but word wrapping
is different.
2020-03-11 14:33:30 +02:00
Lasse Collin 7c85e8953c Translations: Add fi and pt_BR, and update de, fr, it, and pl.
The German translation isn't identical to the file in
the Translation Project but the changes (white space changes
only) were approved by the translator Mario Blättermann.
2020-03-11 14:18:03 +02:00
Lasse Collin 7da3ebc67f Update THANKS. 2020-03-11 13:05:37 +02:00
Lasse Collin 1acc487943 Build: Add very limited experimental CMake support.
This version matches CMake files in the master branch (commit
265daa873c) 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.
2020-03-11 13:05:29 +02:00
Lasse Collin 9acc6abea1 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.
2020-03-11 12:05:57 +02:00
Lasse Collin c8853b3154 Update m4/.gitignore. 2020-03-11 12:05:57 +02:00
Lasse Collin 901eb4a8c9 liblzma: Remove unneeded <sys/types.h> from fastpos_tablegen.c.
This file only generates fastpos_table.c.
It isn't built as a part of liblzma.
2020-03-11 12:05:57 +02:00
Lasse Collin ac35c9585f Use defined(__GNUC__) before __GNUC__ in preprocessor lines.
This should silence the equivalent of -Wundef in compilers that
don't define __GNUC__.
2020-03-11 12:05:57 +02:00
Lasse Collin fb9cada7cf 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 544aaa3d13 but
it was forgotten.
2020-03-11 12:05:57 +02:00
Lasse Collin 6117955af0 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.
2020-03-11 12:05:57 +02:00
Lasse Collin c2cc64d78c xz: Silence a warning when sig_atomic_t is long int.
It can be true at least on z/OS.
2020-03-11 12:05:57 +02:00
Lasse Collin b6314aa275 xz: Avoid unneeded access of a volatile variable. 2020-03-11 12:05:57 +02:00
Lasse Collin f772a1572f tuklib_integer.m4: Optimize the check order.
The __builtin byteswapping is the preferred one so check for it first.
2020-03-11 12:05:57 +02:00
Lasse Collin 641042e63f tuklib_exit: Add missing header.
strerror() needs <string.h> which happened to be included via
tuklib_common.h -> tuklib_config.h -> sysdefs.h if HAVE_CONFIG_H
was defined. This wasn't tested without config.h before so it
had worked fine.
2020-03-11 12:05:57 +02:00
Lasse Collin dbd55a69e5 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.
2020-03-11 12:05:57 +02:00
Lasse Collin 9294909861 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)
2020-03-11 12:05:57 +02:00
Lasse Collin bd09081bbd 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.
2020-03-11 12:05:57 +02:00
Lasse Collin 1e5e08d865 Translations: Add German translation of the man pages.
Thanks to Mario Blättermann.
2020-03-11 12:05:57 +02:00
Lasse Collin 4b1447809f 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.
2020-03-11 12:05:57 +02:00
Lasse Collin 882fcfdcd8 Update THANKS (sync with the master branch). 2020-02-06 17:31:55 +02:00
Lasse Collin 134bb77658 Update tests/.gitignore. 2020-02-06 00:01:03 +02:00
Lasse Collin 6912472faf Update m4/.gitignore. 2020-02-06 00:01:03 +02:00
Lasse Collin 68c60735bb Update THANKS. 2020-02-06 00:01:03 +02:00
Lasse Collin e1beaa74bc xz: Comment out annoying sandboxing messages. 2020-02-05 22:00:28 +02:00
Lasse Collin 8238192652 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.
2020-02-05 22:00:28 +02:00
Lasse Collin 93a1f61e89 Build: Update m4/ax_pthread.m4 from Autoconf Archive. 2020-02-05 22:00:28 +02:00
Lasse Collin d0daa21792 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.
2020-02-05 22:00:28 +02:00
Lasse Collin 4433c2dc57 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.
2020-02-05 22:00:28 +02:00
Lasse Collin acc0ef3ac8 xz: Move flush_needed from mytime.h to file_pair struct in file_io.h. 2020-02-05 22:00:28 +02:00
Lasse Collin 4afe69d30b 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.
2020-02-05 22:00:28 +02:00
Lasse Collin ec26f3ace5 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.
2020-02-05 22:00:28 +02:00
Lasse Collin 3891570324 xz: Refactor io_read() a bit. 2020-02-05 22:00:28 +02:00
Lasse Collin f6d2424534 xz: Update a comment in file_io.h. 2020-02-05 22:00:28 +02:00
Lasse Collin 15b55d5c63 xz: Move the setting of flush_needed in file_io.c to a nicer location. 2020-02-05 22:00:28 +02:00
Lasse Collin 609c706785 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.
2020-02-05 20:21:56 +02:00
Lasse Collin 00517d125c Rename unaligned_read32ne to read32ne, and similarly for the others. 2019-12-31 22:41:45 +02:00
Lasse Collin 52d89d8443 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.
2019-12-31 22:34:34 +02:00
Lasse Collin 850620468b 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
2019-12-31 22:34:10 +02:00
Lasse Collin a45badf034 Tests: Hopefully fix test_check.c to work on EBCDIC systems.
Thanks to Daniel Richard G.
2019-12-31 22:31:34 +02:00
Lasse Collin c9a8071e66 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.
2019-12-31 22:31:30 +02:00
Lasse Collin aba140e2df Fix comment typos in tuklib_mbstr* files. 2019-12-31 22:27:11 +02:00
Lasse Collin 710f5bd769 Add missing include to tuklib_mbstr_width.c.
It didn't matter in XZ Utils because sysdefs.h
includes string.h anyway.
2019-12-31 22:27:11 +02:00
Lasse Collin 0e491aa8cd liblzma: Fix a buggy comment. 2019-12-31 22:26:38 +02:00
Lasse Collin bfc245569f configure.ac: Fix a typo in a comment. 2019-12-31 22:26:38 +02:00
Lasse Collin f18eee9d15 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.
2019-12-31 22:26:38 +02:00
Lasse Collin 25f7455472 liblzma: Add a comment. 2019-12-31 22:26:38 +02:00
Lasse Collin 44eb961f2a liblzma: Silence clang -Wmissing-variable-declarations. 2019-12-31 22:26:38 +02:00
Lasse Collin 267afcd995 xz: Silence a warning from clang -Wsign-conversion in main.c. 2019-12-31 22:25:42 +02:00
Lasse Collin 0e3c4002f8 liblzma: Remove incorrect uses of lzma_attribute((__unused__)).
Caught by clang -Wused-but-marked-unused.
2019-12-31 22:25:02 +02:00
Lasse Collin cb708e8fa3 Tests: Silence a warning from -Wsign-conversion. 2019-12-31 22:25:02 +02:00
Lasse Collin c8cace3d6e 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.
2019-12-31 22:25:02 +02:00
Lasse Collin 65a42741e2 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.
2019-12-31 22:20:10 +02:00
Lasse Collin 5c4fb60e8d tuklib_mbstr_width: Fix a warning from -Wsign-conversion. 2019-12-31 22:19:18 +02:00
Lasse Collin 37df03ce52 xz: Fix some of the warnings from -Wsign-conversion. 2019-12-31 22:19:18 +02:00
Lasse Collin 7c65ae0f5f tuklib_cpucores: Silence warnings from -Wsign-conversion. 2019-12-31 22:19:18 +02:00
Lasse Collin a502dd1d00 xzdec: Fix warnings from -Wsign-conversion. 2019-12-31 22:19:18 +02:00
Lasse Collin a45d1a5374 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).
2019-12-31 22:19:18 +02:00
Lasse Collin 4ff87ddf80 tuklib_integer: Silence warnings from -Wsign-conversion. 2019-12-31 22:19:18 +02:00
Lasse Collin ed1a9d3398 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.
2019-12-31 22:19:18 +02:00
Lasse Collin 612c88dfc0 Update THANKS. 2019-12-31 22:19:18 +02:00
Lasse Collin 85da31d8b8 liblzma: Fix comments.
Thanks to Bruce Stark.
2019-12-31 22:19:18 +02:00
Lasse Collin 6a73a78895 liblzma: Fix one more unaligned read to use unaligned_read16ne(). 2019-12-31 22:19:18 +02:00
Lasse Collin ce59b34ec9 Update THANKS. 2019-12-31 22:19:18 +02:00
Lasse Collin 94aa3fb568 liblzma: memcmplen: Use ctz32() from tuklib_integer.h.
The same compiler-specific #ifdefs are already in tuklib_integer.h
2019-12-31 22:19:18 +02:00
Lasse Collin 412791486d tuklib_integer: Cleanup MSVC-specific code. 2019-12-31 22:19:18 +02:00
Lasse Collin efbf6e5f09 liblzma: Use unaligned_readXXne functions instead of type punning.
Now gcc -fsanitize=undefined should be clean.

Thanks to Jeffrey Walton.
2019-12-31 22:19:18 +02:00
Lasse Collin 29afef0348 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.
2019-12-31 22:19:12 +02:00
Lasse Collin 596ed3de44 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.
2019-07-13 17:56:28 +03:00
Lasse Collin b4b83555c5 Update THANKS. 2019-07-13 17:54:52 +03:00
Lasse Collin 8d4906262b xz: Update xz man page date. 2019-07-13 17:54:52 +03:00
Antoine Cœur 0d318402f8 spelling 2019-07-13 17:53:33 +03:00
Lasse Collin aeb3be8ac4 README: Update translation instructions.
XZ Utils is now part of the Translation Project
<https://translationproject.org/>.
2019-07-13 17:37:55 +03:00
Lasse Collin 0c238dc3fe Update THANKS. 2019-07-13 17:37:55 +03:00
Lasse Collin 3ca432d9cc 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 <Filip.Palian@pjwstk.edu.pl> for
the bug report.
2019-07-13 17:37:55 +03:00
Lasse Collin fcc419e3c3 xz: Update man page timestamp. 2019-07-13 17:36:27 +03:00
Pavel Raiskup 5a2fc3cd01 'have have' typos 2019-07-13 17:36:27 +03:00
Lasse Collin 7143b04fe4 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.
2019-07-13 17:17:00 +03:00
Lasse Collin 273c33297b 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.
2019-07-13 17:17:00 +03:00
Lasse Collin 65b4aba6d0 liblzma: Improve lzma_properties_decode() API documentation. 2019-07-13 17:17:00 +03:00
Lasse Collin 531e78e5a2 Update THANKS. 2019-05-01 16:53:55 +03:00
Lasse Collin 905de7e935 Windows: Update VS version in windows/vs2019/config.h. 2019-05-01 16:53:50 +03:00
Julien Marrec 0ffd30e172 Windows: Upgrade solution itself 2019-05-01 16:49:49 +03:00
Julien Marrec c2ef96685f Windows: Upgrade solution with VS2019 2019-05-01 16:49:49 +03:00
Julien Marrec 25fccaf00b Windows: Duplicate windows/vs2017 before upgrading 2019-05-01 16:49:29 +03:00
Lasse Collin 1424078d63 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".
2019-05-01 16:47:57 +03:00
Lasse Collin b5be61cc06 Bump version and soname for 5.2.4. 2018-04-29 19:00:06 +03:00
Lasse Collin c47fa6d067 extra/scanlzma: Fix compiler warnings. 2018-04-29 18:59:42 +03:00
Lasse Collin 7b350fe21a Add NEWS for 5.2.4. 2018-04-29 18:15:37 +03:00
Lasse Collin 5801591162 Update THANKS. 2018-03-28 19:24:39 +03:00
Ben Boeckel c4a616f453 nothrow: use noexcept for C++11 and newer
In C++11, the `throw()` specifier is deprecated and `noexcept` is
preffered instead.
2018-03-28 19:24:39 +03:00
Lasse Collin 0b8947782f 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.
2018-03-28 19:24:39 +03:00
Lasse Collin 48f3b9f73f Update THANKS. 2018-03-28 19:24:39 +03:00
Lasse Collin a3ce3e9023 tuklib_integer: New Intel C compiler needs immintrin.h.
Thanks to Melanie Blower (Intel) for the patch.
2018-03-28 19:24:39 +03:00
Lasse Collin 4505ca4839 Update THANKS. 2018-03-28 19:23:09 +03:00
Lasse Collin 1ef3cc226e 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).
2018-03-28 19:23:09 +03:00
Lasse Collin e775d2a818 Windows: Add project files for VS2017.
These files match the v5.2 branch (no file info decoder).
2018-03-28 19:23:09 +03:00
Lasse Collin 10e02e0fbb Windows: Move VS2013 files into windows/vs2013 directory. 2018-03-28 19:23:09 +03:00
Lasse Collin 06eebd4543 Fix or hide warnings from GCC 7's -Wimplicit-fallthrough. 2018-03-28 19:16:06 +03:00
Alexey Tourbin ea4ea1dffa Docs: Fix a typo in a comment in doc/examples/02_decompress.c. 2018-03-28 19:16:06 +03:00
Lasse Collin eb2ef4c79b 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.
2018-03-28 19:16:06 +03:00
Lasse Collin 3ea5dbd9b0 Build: Omit pre-5.0.0 entries from the generated ChangeLog.
It makes ChangeLog significantly smaller.
2018-03-28 19:16:06 +03:00
Lasse Collin bae2467593 Update the Git repository URL to HTTPS in ChangeLog. 2018-03-28 19:16:06 +03:00
Lasse Collin 70f4792119 Update the home page URLs to HTTPS. 2018-03-28 19:16:06 +03:00
Lasse Collin 2a4b2fa75d xz: Use POSIX_FADV_RANDOM for in "xz --list" mode.
xz --list is random access so POSIX_FADV_SEQUENTIAL was clearly
wrong.
2017-03-30 22:02:10 +03:00
Lasse Collin eb25743ade 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.
2017-03-30 19:52:24 +03:00
Lasse Collin ef36c6362f liblzma: Similar memlimit fix for stream_, alone_, and auto_decoder. 2017-03-30 19:52:24 +03:00
Lasse Collin 5761603265 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.
2017-03-30 19:52:24 +03:00
Lasse Collin 3d566cd519 Bump version and soname for 5.2.3. 2016-12-30 13:26:36 +02:00
Lasse Collin 053e624fe3 Update NEWS for 5.2.3. 2016-12-30 13:25:10 +02:00
Lasse Collin cae412b2b7 xz: Fix the Capsicum rights on user_abort_pipe. 2016-12-30 13:13:57 +02:00
Lasse Collin 9ccbae4100 Mention potential sandboxing bugs in INSTALL. 2016-12-28 21:05:22 +02:00
Lasse Collin e013a337d3 liblzma: Avoid multiple definitions of lzma_coder structures.
Only one definition was visible in a translation unit.
It avoided a few casts and temp variables but seems that
this hack doesn't work with link-time optimizations in compilers
as it's not C99/C11 compliant.

Fixes:
http://www.mail-archive.com/xz-devel@tukaani.org/msg00279.html
2016-12-28 19:59:32 +02:00
Lasse Collin 8e0f1af3dc Document --enable-sandbox configure option in INSTALL. 2016-12-26 20:50:25 +02:00
Lasse Collin ce2542d220 xz: Add support for sandboxing with Capsicum (disabled by default).
In the v5.2 branch this feature is considered experimental
and thus disabled by default.

The sandboxing is used conditionally as described in main.c.
This isn't optimal but it was much easier to implement than
a full sandboxing solution and it still covers the most common
use cases where xz is writing to standard output. This should
have practically no effect on performance even with small files
as fork() isn't needed.

C and locale libraries can open files as needed. This has been
fine in the past, but it's a problem with things like Capsicum.
io_sandbox_enter() tries to ensure that various locale-related
files have been loaded before cap_enter() is called, but it's
possible that there are other similar problems which haven't
been seen yet.

Currently Capsicum is available on FreeBSD 10 and later
and there is a port to Linux too.

Thanks to Loganaden Velvindron for help.
2016-12-26 20:40:27 +02:00
Lasse Collin 3ca1d5e632 Fix bugs and otherwise improve ax_check_capsicum.m4.
AU_ALIAS was removed because the new version is incompatible
with the old version.

It no longer checks for <sys/capability.h> separately.
It's enough to test for it as part of AC_CHECK_DECL.
The defines HAVE_CAPSICUM_SYS_CAPSICUM_H and
HAVE_CAPSICUM_SYS_CAPABILITY_H were removed as unneeded.
HAVE_SYS_CAPSICUM_H from AC_CHECK_HEADERS is enough.

It no longer does a useless search for the Capsicum library
if the header wasn't found.

Fixed a bug in ACTION-IF-FOUND (the first argument). Specifying
the argument omitted the default action but the given action
wasn't used instead.

AC_DEFINE([HAVE_CAPSICUM]) is now always called when Capsicum
support is found. Previously it was part of the default
ACTION-IF-FOUND which a custom action would override. Now
the default action only prepends ${CAPSICUM_LIB} to LIBS.

The documentation was updated.

Since there as no serial number, "#serial 2" was added.
2016-12-26 20:37:40 +02:00
Lasse Collin 5f3a742b64 Add m4/ax_check_capsicum.m4 for detecting Capsicum support.
The file was loaded from this web page:
https://github.com/google/capsicum-test/blob/dev/autoconf/m4/ax_check_capsicum.m4

Thanks to Loganaden Velvindron for pointing it out for me.
2016-12-26 20:37:40 +02:00
Lasse Collin d74377e62b liblzma: Fix a memory leak in error path of lzma_index_dup().
lzma_index_dup() calls index_dup_stream() which, in case of
an error, calls index_stream_end() to free memory allocated
by index_stream_init(). However, it illogically didn't
actually free the memory. To make it logical, the tree
handling code was modified a bit in addition to changing
index_stream_end().

Thanks to Evan Nemerson for the bug report.
2016-12-26 17:57:51 +02:00
Lasse Collin f580732216 Update THANKS. 2016-12-26 17:24:15 +02:00
Lasse Collin 88d7a7fd15 tuklib_cpucores: Add support for sched_getaffinity().
It's available in glibc (GNU/Linux, GNU/kFreeBSD). It's better
than sysconf(_SC_NPROCESSORS_ONLN) because sched_getaffinity()
gives the number of cores available to the process instead of
the total number of cores online.

As a side effect, this commit fixes a bug on GNU/kFreeBSD where
configure would detect the FreeBSD-specific cpuset_getaffinity()
but it wouldn't actually work because on GNU/kFreeBSD it requires
using -lfreebsd-glue when linking. Now the glibc-specific function
will be used instead.

Thanks to Sebastian Andrzej Siewior for the original patch
and testing.
2016-12-26 17:24:09 +02:00
Lasse Collin 51baf68437 xz: Fix copying of timestamps on Windows.
xz used to call utime() on Windows, but its result gets lost
on close(). Using _futime() seems to work.

Thanks to Martok for reporting the bug:
http://www.mail-archive.com/xz-devel@tukaani.org/msg00261.html
2016-06-30 21:00:49 +03:00
Lasse Collin 1ddc479851 xz: Silence warnings from -Wlogical-op.
Thanks to Evan Nemerson.
2016-06-28 21:11:02 +03:00
Lasse Collin be647ff5ed Build: Fix = to += for xz_SOURCES in src/xz/Makefile.am.
Thanks to Christian Kujau.
2016-06-28 21:09:46 +03:00
Lasse Collin fb6d50c153 Build: Bump GNU Gettext version requirement to 0.19.
It silences a few warnings and most people probably have
0.19 even on stable distributions.

Thanks to Christian Kujau.
2016-06-28 21:09:46 +03:00
Lasse Collin 74f8dad9f9 liblzma: Disable external SHA-256 by default.
This is the sane thing to do. The conflict with OpenSSL
on some OSes and especially that the OS-provided versions
can be significantly slower makes it clear that it was
a mistake to have the external SHA-256 support enabled by
default.

Those who want it can now pass --enable-external-sha256 to
configure. INSTALL was updated with notes about OSes where
this can be a bad idea.

The SHA-256 detection code in configure.ac had some bugs that
could lead to a build failure in some situations. These were
fixed, although it doesn't matter that much now that the
external SHA-256 is disabled by default.

MINIX >= 3.2.0 uses NetBSD's libc and thus has SHA256_Init
in libc instead of libutil. Support for the libutil version
was removed.
2016-06-28 21:09:46 +03:00
Lasse Collin ea7f6ff04c Update THANKS. 2016-06-28 21:09:46 +03:00
Lasse Collin d0e018016b Build: Avoid SHA256_Init on FreeBSD and MINIX 3.
On FreeBSD 10 and older, SHA256_Init from libmd conflicts
with libcrypto from OpenSSL. The OpenSSL version has
different sizeof(SHA256_CTX) and it can cause weird
problems if wrong SHA256_Init gets used.

Looking at the source, MINIX 3 seems to have a similar issue but
I'm not sure. To be safe, I disabled SHA256_Init on MINIX 3 too.

NetBSD has SHA256_Init in libc and they had a similar problem,
but they already fixed it in 2009.

Thanks to Jim Wilcoxson for the bug report that helped
in finding the problem.
2016-06-28 21:09:46 +03:00
Lasse Collin 5daae12391 tuklib_physmem: Hopefully silence a warning on Windows. 2016-06-28 21:09:46 +03:00
Lasse Collin 491acc406e Update THANKS. 2016-06-28 21:09:46 +03:00
Lasse Collin 8173ff8790 liblzma: Make Valgrind happier with optimized (gcc -O2) liblzma.
When optimizing, GCC can reorder code so that an uninitialized
value gets used in a comparison, which makes Valgrind unhappy.
It doesn't happen when compiled with -O0, which I tend to use
when running Valgrind.

Thanks to Rich Prohaska. I remember this being mentioned long
ago by someone else but nothing was done back then.
2016-06-28 21:09:46 +03:00
Lasse Collin 013de2b5ab liblzma: Rename lzma_presets.c back to lzma_encoder_presets.c.
It would be too annoying to update other build systems
just because of this.
2016-06-28 21:09:46 +03:00
Lasse Collin a322f70ad9 Build: Disable xzdec, lzmadec, and lzmainfo when they cannot be built.
They all need decoder support and if that isn't available,
there's no point trying to build them.
2016-06-28 21:09:46 +03:00
Lasse Collin 8ea49606cf Build: Simplify $enable_{encoders,decoders} usage a bit. 2016-06-28 21:09:46 +03:00
Lasse Collin 42131a25e5 Windows/MSVC: Update config.h. 2016-06-28 21:09:46 +03:00
Lasse Collin e9184e87cc DOS: Update config.h. 2016-06-28 21:09:46 +03:00
Lasse Collin 2296778f3c xz: Make xz buildable even when encoders or decoders are disabled.
The patch is quite long but it's mostly about adding new #ifdefs
to omit code when encoders or decoders have been disabled.

This adds two new #defines to config.h: HAVE_ENCODERS and
HAVE_DECODERS.
2016-06-28 21:09:46 +03:00
Lasse Collin 97a3109281 Build: Build LZMA1/2 presets also when only decoder is wanted.
People shouldn't rely on the presets when decoding raw streams,
but xz uses the presets as the starting point for raw decoder
options anyway.

lzma_encocder_presets.c was renamed to lzma_presets.c to
make it clear it's not used solely by the encoder code.
2016-06-28 21:09:46 +03:00
Lasse Collin dc6b78d7f0 Build: Fix configure to handle LZMA1 dependency with LZMA2.
Now it gives an error if LZMA1 encoder/decoder is missing
when LZMA2 encoder/decoder was requested. Even better would
be LZMA2 implicitly enabling LZMA1 but it would need more code.
2016-06-28 21:09:46 +03:00
Lasse Collin 46d76c9cd3 Build: Don't omit lzma_cputhreads() unless using --disable-threads.
Previously it was omitted if encoders were disabled
with --disable-encoders. It didn't make sense and
it also broke the build.
2016-06-28 21:09:46 +03:00
Lasse Collin 16d68f874d liblzma: Fix a build failure related to external SHA-256 support.
If an appropriate header and structure were found by configure,
but a library with a usable SHA-256 functions wasn't, the build
failed.
2016-06-28 21:09:46 +03:00
Lasse Collin d9311647fc xz: Always close the file before trying to delete it.
unlink() can return EBUSY in errno for open files on some
operating systems and file systems.
2016-06-28 21:09:46 +03:00
Lasse Collin f59c4183f3 Update THANKS. 2016-06-28 21:09:46 +03:00
Lasse Collin 35f189673e Tests: Add tests for the two bugs fixed in index.c. 2016-06-28 21:09:46 +03:00
Lasse Collin e10bfdb0fc liblzma: Fix lzma_index_dup() for empty Streams.
Stream Flags and Stream Padding weren't copied from
empty Streams.
2016-06-28 21:09:46 +03:00
Lasse Collin 06f434bd89 liblzma: Add a note to index.c for those using static analyzers. 2016-06-28 21:09:46 +03:00
Lasse Collin 9815cdf698 Bump version and soname for 5.2.2. 2015-09-29 13:59:35 +03:00
Lasse Collin cbe0cec847 Update NEWS for 5.2.2. 2015-09-29 13:57:46 +03:00
Andre Noll 49427ce7ee Fix typo in German translation.
As pointed out by Robert Pollak, there's a typo in the German
translation of the compression preset option (-0 ... -9) help text.
"The compressor" translates to "der Komprimierer", and the genitive
form is "des Komprimierers". The old word makes no sense at all.
2015-09-28 19:05:13 +03:00
Hauke Henningsen 608d6f06c9 Update German translation, mostly wrt orthography
Provide an update of the German translation.
* A lot of compound words were previously written with spaces, while
  German orthography is relatively clear in that the components
  should not be separated.
* When referring to the actual process of (de)compression rather than the
  concept, replace “(De-)Kompression” with “(De-)Komprimierung”.
  Previously, both forms were used in this context and are now used in a
  manner consistent with “Komprimierung” being more likely to refer to
  a process.
* Consistently translate “standard input”/“output”
* Use “Zeichen” instead of false friend “Charakter” for “character”
* Insert commas around relative clauses (as required in German)
* Some other minor corrections
* Capitalize “ß” as “ẞ”
* Consistently start option descriptions in --help with capital letters

Acked-By: Andre Noll <maan@tuebingen.mpg.de>

* Update after msgmerge
2015-09-25 14:03:24 +03:00
Lasse Collin c8988414e5 Build: Minor Cygwin cleanup.
Some tests used "cygwin*" and some used "cygwin". I changed
them all to use "cygwin". Shouldn't affect anything in practice.
2015-09-25 14:03:24 +03:00
Lasse Collin 85a6dfed53 Build: Support building of MSYS2 binaries. 2015-09-25 14:03:24 +03:00
Lasse Collin 77f270be84 Windows: Define DLL_EXPORT when building liblzma.dll with MSVC.
src/liblzma/common/common.h uses it to set __declspec(dllexport)
for the API symbols.

Thanks to Adam Walling.
2015-09-25 14:03:24 +03:00
Lasse Collin 8c975446c5 Windows: Omit unneeded header files from MSVC project files. 2015-09-25 14:03:24 +03:00
Lasse Collin 119a004349 liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer. 2015-09-25 14:03:24 +03:00
Lasse Collin d4e7c557fc Update THANKS. 2015-09-25 14:03:24 +03:00
Lasse Collin 98001740ca Windows: Update the docs. 2015-09-25 14:03:24 +03:00
Lasse Collin 28195e4c87 Windows: Add MSVC project files for building liblzma.
Thanks to Adam Walling for creating these files.
2015-09-25 14:03:24 +03:00
Lasse Collin 960440f323 Tests: Fix a memory leak in test_bcj_exact_size.
Thanks to Cristian Rodríguez.
2015-05-13 21:36:19 +03:00
Lasse Collin 68cd35acaf Fix NEWS about threading in 5.2.0.
Thanks to Andy Hochhaus.
2015-05-12 18:08:38 +03:00
Lasse Collin ff96ed6d25 xz: Document that threaded decompression hasn't been implemented yet. 2015-05-11 21:26:40 +03:00
Lasse Collin 00d37b64a6 Update THANKS. 2015-04-20 20:20:29 +03:00
Lasse Collin db190a832c Revert "xz: Use pipe2() if available."
This reverts commit 7a11c4a8e5.
It is a problem when libc has pipe2() but the kernel is too
old to have pipe2() and thus pipe2() fails. In xz it's pointless
to have a fallback for non-functioning pipe2(); it's better to
avoid pipe2() completely.

Thanks to Michael Fox for the bug report.
2015-04-20 19:59:18 +03:00
229 changed files with 36405 additions and 3270 deletions

29
.gitignore vendored
View File

@ -5,6 +5,7 @@
.deps .deps
.libs .libs
*.a
*.la *.la
*.lo *.lo
*.o *.o
@ -32,6 +33,8 @@ build-aux/ltmain.sh
build-aux/missing build-aux/missing
build-aux/test-driver build-aux/test-driver
/doc/html
/src/liblzma/liblzma.pc /src/liblzma/liblzma.pc
/src/lzmainfo/lzmainfo /src/lzmainfo/lzmainfo
/src/xz/xz /src/xz/xz
@ -47,11 +50,15 @@ build-aux/test-driver
/tests/compress_generated_random /tests/compress_generated_random
/tests/compress_generated_text /tests/compress_generated_text
/tests/create_compress_files /tests/create_compress_files
/tests/test_bcj_exact_size
/tests/test_block_header /tests/test_block_header
/tests/test_check /tests/test_check
/tests/test_filter_flags /tests/test_filter_flags
/tests/test_index /tests/test_index
/tests/test_stream_flags /tests/test_stream_flags
/tests/xzgrep_test_1.xz
/tests/xzgrep_test_2.xz
/tests/xzgrep_test_output
/lib/Makefile /lib/Makefile
/tests/Makefile /tests/Makefile
@ -64,3 +71,25 @@ build-aux/test-driver
/src/liblzma/api/Makefile /src/liblzma/api/Makefile
/src/lzmainfo/Makefile /src/lzmainfo/Makefile
/src/xzdec/Makefile /src/xzdec/Makefile
/CMakeCache.txt
/CMakeFiles
/CTestTestfile.cmake
/cmake_install.cmake
/DartConfiguration.tcl
/liblzma-config-version.cmake
/liblzma-config.cmake
/lzcat
/lzcat.1
/lzma
/lzma.1
/Testing
/tests_bin/
/unlzma
/unlzma.1
/unxz
/unxz.1
/xz
/xzcat
/xzcat.1
/xzdec

12
AUTHORS
View File

@ -3,15 +3,15 @@ Authors of XZ Utils
=================== ===================
XZ Utils is developed and maintained by Lasse Collin XZ Utils is developed and maintained by Lasse Collin
<lasse.collin@tukaani.org>. <lasse.collin@tukaani.org> and Jia Tan <jiat0218@gmail.com>.
Major parts of liblzma are based on code written by Igor Pavlov, Major parts of liblzma are based on code written by Igor Pavlov,
specifically the LZMA SDK <http://7-zip.org/sdk.html>. Without specifically the LZMA SDK <https://7-zip.org/sdk.html>. Without
this code, XZ Utils wouldn't exist. this code, XZ Utils wouldn't exist.
The SHA-256 implementation in liblzma is based on the code found from The SHA-256 implementation in liblzma is based on the code found from
7-Zip <http://7-zip.org/>, which has a modified version of the SHA-256 7-Zip <https://7-zip.org/>, which has a modified version of the SHA-256
code found from Crypto++ <http://www.cryptopp.com/>. The SHA-256 code code found from Crypto++ <https://www.cryptopp.com/>. The SHA-256 code
in Crypto++ was written by Kevin Springle and Wei Dai. in Crypto++ was written by Kevin Springle and Wei Dai.
Some scripts have been adapted from gzip. The original versions Some scripts have been adapted from gzip. The original versions
@ -19,6 +19,10 @@ Authors of XZ Utils
Andrew Dudman helped adapting the scripts and their man pages for Andrew Dudman helped adapting the scripts and their man pages for
XZ Utils. XZ Utils.
Other authors:
- Jonathan Nieder
- Joachim Henke
The GNU Autotools-based build system contains files from many authors, The GNU Autotools-based build system contains files from many authors,
which I'm not trying to list here. which I'm not trying to list here.

796
CMakeLists.txt Normal file
View File

@ -0,0 +1,796 @@
#############################################################################
#
# 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
#
# 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.25 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)
# We need a compiler that supports enough C99 or newer (variable-length arrays
# aren't needed, those are optional in C17). Setting CMAKE_C_STANDARD here
# makes it the default for all targets. It doesn't affect the INTERFACE so
# liblzma::liblzma won't end up with INTERFACE_COMPILE_FEATURES "c_std_99"
# (the API headers are C89 and C++ compatible).
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# On Apple OSes, don't build executables as bundles:
set(CMAKE_MACOSX_BUNDLE OFF)
# windres from GNU binutils can be tricky with command line arguments
# that contain spaces or other funny characters. Unfortunately we need
# a space in PACKAGE_NAME. Using \x20 to encode the US-ASCII space seems
# to work in both cmd.exe and /bin/sh.
#
# However, even \x20 isn't enough in all situations, resulting in
# "syntax error" from windres. Using --use-temp-file prevents windres
# from using popen() and this seems to fix the problem.
#
# llvm-windres claims to be compatible with GNU windres but with that
# the \x20 results in "XZx20Utils" in the compiled binary. (At the
# same time it works correctly with clang (the C compiler).) The option
# --use-temp-file makes no difference.
#
# CMake 3.25 doesn't have CMAKE_RC_COMPILER_ID so we rely on
# CMAKE_C_COMPILER_ID. If Clang is used together with GNU windres
# then it will fail, but this way the risk of a bad string in
# the binary should be fairly low.
if(WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU")
# Use workarounds with GNU windres. The \x20 in PACKAGE_NAME works
# with gcc too so we don't need to worry how to pass different flags
# to windres and gcc.
string(APPEND CMAKE_RC_FLAGS " --use-temp-file")
set(PACKAGE_NAME "XZ\\x20Utils")
else()
# Elsewhere a space is safe. This also keeps things compatible with
# EBCDIC in case CMake-based build is ever done on such a system.
set(PACKAGE_NAME "XZ Utils")
endif()
# Definitions common to all targets:
add_compile_definitions(
# Package info:
PACKAGE_NAME="${PACKAGE_NAME}"
PACKAGE_BUGREPORT="xz@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.
$<$<CONFIG:>: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 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=$<BOOL:"${HAVE_DECL_CLOCK_MONOTONIC}">
)
endif()
endif()
# Threading support:
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
if(CMAKE_USE_WIN32_THREADS_INIT)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
# 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.
add_compile_definitions(MYTHREAD_WIN95)
else()
# Define to 1 when using Windows Vista compatible threads. This uses features
# that are not available on Windows XP.
add_compile_definitions(MYTHREAD_VISTA)
endif()
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 <immintrin.h>
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)
set_target_properties(liblzma PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_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(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
# GNU/Linux-specific symbol versioning for shared liblzma.
# Note that adding link options doesn't affect static builds
# but HAVE_SYMBOL_VERSIONS_LINUX must not be used with static builds
# because it would put symbol versions into the static library which
# can cause problems. It's clearer if all symver related things are
# omitted when not building a shared library.
#
# NOTE: Set it explicitly to 1 to make it clear that versioning is
# done unconditionally in the C files.
target_compile_definitions(liblzma PRIVATE HAVE_SYMBOL_VERSIONS_LINUX=1)
target_link_options(liblzma PRIVATE
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
)
set_target_properties(liblzma PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
)
elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
# Symbol versioning for shared liblzma for non-GNU/Linux.
# FIXME? What about Solaris?
target_link_options(liblzma PRIVATE
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_generic.map"
)
set_target_properties(liblzma PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_generic.map"
)
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 liblzma-config-version.cmake. We use this spelling instead of
# liblzmaConfig.cmake to make find_package work in case insensitive manner
# even with case sensitive file systems. This gives more consistent behavior
# between operating systems.
#
# 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}/liblzma-config-version.cmake"
VERSION "${liblzma_VERSION}"
COMPATIBILITY SameMajorVersion)
# Create liblzma-config.cmake.
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/liblzma-config.cmake"
"include(CMakeFindDependencyMacro)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_dependency(Threads)
include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzma-targets.cmake\")
# Be compatible with the spelling used by the FindLibLZMA module. This
# doesn't use ALIAS because it would make CMake resolve LibLZMA::LibLZMA
# to liblzma::liblzma instead of keeping the original spelling. Keeping
# the original spelling is important for good FindLibLZMA compatibility.
add_library(LibLZMA::LibLZMA INTERFACE IMPORTED)
set_target_properties(LibLZMA::LibLZMA PROPERTIES
INTERFACE_LINK_LIBRARIES liblzma::liblzma)
")
# 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 liblzma-targets.cmake
DESTINATION "${liblzma_INSTALL_CMAKEDIR}"
COMPONENT liblzma_Development)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblzma-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/liblzma-config-version.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)
if(WIN32)
# Add the Windows resource file for xzdec.exe.
target_sources(xzdec PRIVATE src/xzdec/xzdec_w32res.rc)
set_target_properties(xzdec PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
)
endif()
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)
if(WIN32)
# Add the Windows resource file for xz.exe.
target_sources(xz PRIVATE src/xz/xz_w32res.rc)
set_target_properties(xz PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
)
endif()
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)
if(UNIX)
install(FILES src/xz/xz.1
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
COMPONENT xz)
option(CREATE_XZ_SYMLINKS "Create unxz and xzcat symlinks" ON)
option(CREATE_LZMA_SYMLINKS "Create lzma, unlzma, and lzcat symlinks"
ON)
set(XZ_LINKS)
if(CREATE_XZ_SYMLINKS)
list(APPEND XZ_LINKS "unxz" "xzcat")
endif()
if(CREATE_LZMA_SYMLINKS)
list(APPEND XZ_LINKS "lzma" "unlzma" "lzcat")
endif()
# Create symlinks in the build directory and then install them.
#
# The symlinks do not likely need any special extension since
# even on Windows the symlink can still be executed without
# the .exe extension.
foreach(LINK IN LISTS XZ_LINKS)
add_custom_target("${LINK}" ALL
"${CMAKE_COMMAND}" -E create_symlink
"$<TARGET_FILE_NAME:xz>" "${LINK}"
BYPRODUCTS "${LINK}"
VERBATIM)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LINK}"
DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT xz)
add_custom_target("${LINK}.1" ALL
"${CMAKE_COMMAND}" -E create_symlink "xz.1" "${LINK}.1"
BYPRODUCTS "${LINK}.1"
VERBATIM)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LINK}.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
COMPONENT xz)
endforeach()
endif()
endif()

View File

@ -47,7 +47,7 @@ XZ Utils Licensing
naturally it is not legally required. Here is an example of a good naturally it is not legally required. Here is an example of a good
notice to put into "about box" or into documentation: notice to put into "about box" or into documentation:
This software includes code from XZ Utils <http://tukaani.org/xz/>. This software includes code from XZ Utils <https://tukaani.org/xz/>.
The following license texts are included in the following files: The following license texts are included in the following files:
- COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1 - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1

View File

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007 Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school, You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary. if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>. <https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>. <https://www.gnu.org/licenses/why-not-lgpl.html>.

View File

@ -1,6 +1,6 @@
See the commit log in the git repository: 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. 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 Instead, the git commit log is used as ChangeLog. See dist-hook in

View File

@ -564,7 +564,7 @@ REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # 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 REFERENCES_LINK_SOURCE = YES

173
INSTALL
View File

@ -14,6 +14,7 @@ XZ Utils Installation
1.2.6. Tru64 1.2.6. Tru64
1.2.7. Windows 1.2.7. Windows
1.2.8. DOS 1.2.8. DOS
1.2.9. z/OS
1.3. Adding support for new platforms 1.3. Adding support for new platforms
2. configure options 2. configure options
2.1. Static vs. dynamic linking of liblzma 2.1. Static vs. dynamic linking of liblzma
@ -123,8 +124,11 @@ XZ Utils Installation
as an argument to the configure script. as an argument to the configure script.
test_scripts.sh in "make check" may fail if good enough tools are 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 missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). Nowadays
4.5 and 3.2 for more information. /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 1.2.6. Tru64
@ -136,22 +140,42 @@ XZ Utils Installation
1.2.7. Windows 1.2.7. Windows
Building XZ Utils on Windows is supported under MinGW + MSYS, If it is enough to build liblzma (no command line tools):
MinGW-w64 + MSYS, and Cygwin. There is windows/build.bash to
ease packaging XZ Utils with MinGW(-w64) + MSYS into a - There is experimental CMake support. As it is, it should be
redistributable .zip or .7z file. See windows/INSTALL-Windows.txt good enough to build static liblzma with Visual Studio.
for more information. 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.
There is windows/build.bash to ease packaging XZ Utils with
MinGW(-w64) + MSYS into a redistributable .zip or .7z file.
See windows/INSTALL-MinGW.txt for more information.
- MinGW + MSYS (32-bit x86): I haven't recently tested this.
- Cygwin 1.7.35 and later: NOTE that using XZ Utils >= 5.2.0
under Cygwin older than 1.7.35 can lead to DATA LOSS! If
you must use an old Cygwin version, stick to XZ Utils 5.0.x
which is safe under older Cygwin versions. You can check
the Cygwin version with the command "cygcheck -V".
It may be possible to build liblzma with other toolchains too, but It may be possible to build liblzma with other toolchains too, but
that will probably require writing a separate makefile. Building that will probably require writing a separate makefile. Building
the command line tools with non-GNU toolchains will be harder than the command line tools with non-GNU toolchains will be harder than
building only liblzma. building only liblzma.
Starting with XZ Utils 5.2.0, building liblzma (not the whole
XZ Utils) should work with MSVC 2013 update 2 or later using
windows/config.h. No project files or makefiles are included yet,
so the build process isn't as convenient yet as it could be.
Even if liblzma is built with MinGW(-w64), the resulting DLL can Even if liblzma is built with MinGW(-w64), the resulting DLL can
be used by other compilers and linkers, including MSVC. See be used by other compilers and linkers, including MSVC. See
windows/README-Windows.txt for details. windows/README-Windows.txt for details.
@ -159,12 +183,31 @@ XZ Utils Installation
1.2.8. DOS 1.2.8. DOS
There is an experimental Makefile in the "dos" directory to build There is a Makefile in the "dos" directory to build XZ Utils on
XZ Utils on DOS using DJGPP. Support for long file names (LFN) is DOS using DJGPP. Support for long file names (LFN) is needed at
needed. See dos/README for more information. 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 1.3. Adding support for new platforms
@ -237,6 +280,42 @@ XZ Utils Installation
the liblzma ABI, so this option should be used only when the liblzma ABI, so this option should be used only when
it is known to not cause problems. it is known to not cause problems.
--enable-external-sha256
Try to use SHA-256 code from the operating system libc
or similar base system libraries. This doesn't try to
use OpenSSL or libgcrypt or such libraries.
The reasons to use this option:
- It makes liblzma slightly smaller.
- It might improve SHA-256 speed if the implementation
in the operating is very good (but see below).
External SHA-256 is disabled by default for two reasons:
- On some operating systems the symbol names of the
SHA-256 functions conflict with OpenSSL's libcrypto.
This causes weird problems such as decompression
errors if an application is linked against both
liblzma and libcrypto. This problem affects at least
FreeBSD 10 and older and MINIX 3.3.0 and older, but
other OSes that provide a function "SHA256_Init" might
also be affected. FreeBSD 11 has the problem fixed.
NetBSD had the problem but it was fixed it in 2009
already. OpenBSD uses "SHA256Init" and thus never had
a conflict with libcrypto.
- The SHA-256 code in liblzma is faster than the SHA-256
code provided by some operating systems. If you are
curious, build two copies of xz (internal and external
SHA-256) and compare the decompression (xz --test)
times:
dd if=/dev/zero bs=1024k count=1024 \
| xz -v -0 -Csha256 > foo.xz
time xz --test foo.xz
--disable-xz --disable-xz
--disable-xzdec --disable-xzdec
--disable-lzmadec --disable-lzmadec
@ -354,6 +433,28 @@ XZ Utils Installation
calls any liblzma functions from more than calls any liblzma functions from more than
one thread, something bad may happen. one thread, something bad may happen.
--enable-sandbox=METHOD
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
the options --files or --files0 weren't used. This is a
common use case, for example, (de)compressing .tar.xz
files via GNU tar. The sandbox is also used for
single-file `xz --test' or `xz --list'.
Supported METHODs:
auto Look for a supported sandboxing method
and use it if found. If no method is
found, then sandboxing isn't used.
no Disable sandboxing support.
capsicum
Use Capsicum (FreeBSD >= 10) for
sandboxing. If no Capsicum support
is found, configure will give an error.
--enable-symbol-versions --enable-symbol-versions
Use symbol versioning for liblzma. This is enabled by Use symbol versioning for liblzma. This is enabled by
default on GNU/Linux, other GNU-based systems, and default on GNU/Linux, other GNU-based systems, and
@ -370,6 +471,23 @@ XZ Utils Installation
and should work on most systems. This has no effect on the and should work on most systems. This has no effect on the
resulting binaries. 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 2.1. Static vs. dynamic linking of liblzma
@ -432,7 +550,7 @@ XZ Utils Installation
a fallback xzdiff will use mkdir to securely create a temporary a fallback xzdiff will use mkdir to securely create a temporary
directory. Having mktemp available is still recommended since the directory. Having mktemp available is still recommended since the
mkdir fallback method isn't as robust as mktemp is. The original mkdir fallback method isn't as robust as mktemp is. The original
mktemp can be found from <http://www.mktemp.org/>. On GNU, most will mktemp can be found from <https://www.mktemp.org/>. On GNU, most will
use the mktemp program from GNU coreutils instead of the original use the mktemp program from GNU coreutils instead of the original
implementation. Both mktemp versions are fine. implementation. Both mktemp versions are fine.
@ -442,11 +560,17 @@ XZ Utils Installation
3.2. PATH 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, The scripts assume that the required tools (standard POSIX utilities,
mktemp, and xz) are in PATH; the scripts don't set the PATH themselves. 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 (except as described for --enable-path-for-scripts=PREFIX). Some
latter group can easily patch the scripts before running the configure people like this while some think this is a bug. Those in the latter
script by taking advantage of a placeholder line in the scripts. 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: For example, to make the scripts prefix /usr/bin:/bin to PATH:
@ -520,8 +644,9 @@ XZ Utils Installation
some tools are missing from the current PATH or the tools lack some tools are missing from the current PATH or the tools lack
support for some POSIX features. This can happen at least on support for some POSIX features. This can happen at least on
Solaris where the tools in /bin may be ancient but good enough 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 tools are available in /usr/xpg4/bin or /usr/xpg6/bin. For possible
for this problem is described in section 3.2 of this file. 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 If tests other than test_scripts.sh fail, a likely reason is that
libtool links the test programs against an installed version of libtool links the test programs against an installed version of

View File

@ -1,8 +1,8 @@
Installation Instructions Installation Instructions
************************* *************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Foundation, Inc.
Copying and distribution of this file, with or without modification, Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright are permitted in any medium without royalty provided the copyright
@ -12,97 +12,96 @@ without warranty of any kind.
Basic Installation Basic Installation
================== ==================
Briefly, the shell commands `./configure; make; make install' should Briefly, the shell command './configure && make && make install'
configure, build, and install this package. The following should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for more-detailed instructions are generic; see the 'README' file for
instructions specific to this package. Some packages provide this 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 below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions. 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 various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package. those values to create a 'Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent It may also create one or more '.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that definitions. Finally, it creates a shell script 'config.status' that
you can run in the future to recreate the current configuration, and a you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for file 'config.log' containing compiler output (useful mainly for
debugging `configure'). debugging 'configure').
It can also use an optional file (typically called `config.cache' It can also use an optional file (typically called 'config.cache' and
and enabled with `--cache-file=config.cache' or simply `-C') that saves enabled with '--cache-file=config.cache' or simply '-C') that saves the
the results of its tests to speed up reconfiguring. Caching is results of its tests to speed up reconfiguring. Caching is disabled by
disabled by default to prevent problems with accidental use of stale default to prevent problems with accidental use of stale cache files.
cache files.
If you need to do unusual things to compile the package, please try 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 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 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 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. may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create The file 'configure.ac' (or 'configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if 'configure' by a program called 'autoconf'. You need 'configure.ac' if
you want to change it or regenerate `configure' using a newer version you want to change it or regenerate 'configure' using a newer version of
of `autoconf'. 'autoconf'.
The simplest way to compile this package is: The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type 1. 'cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. './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. 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. 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 documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular 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. 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 time using the binaries in their final installed location.
This target does not install anything. Running this target as a 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 root privileges, verifies that the installation completed
correctly. correctly.
6. You can remove the program binaries and object files from the 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the source code directory by typing 'make clean'. To also remove the
files that `configure' created (so you can compile the package for files that 'configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is a different kind of computer), type 'make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly 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 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 all sorts of other programs in order to regenerate files that came
with the distribution. 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 files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the uninstallation works correctly, even though it is required by the
GNU Coding Standards. 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 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. This target is generally not run by end users.
Compilers and Options Compilers and Options
===================== =====================
Some systems require unusual options for compilation or linking that 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. for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters You can give 'configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here by setting variables in the command line or in the environment. Here is
is an example: an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix ./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 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 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 directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the the 'configure' script. 'configure' automatically checks for the source
source code in the directory that `configure' is in and in `..'. This code in the directory that 'configure' is in and in '..'. This is known
is known as a "VPATH" build. 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 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. reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the "universal" binaries--by specifying multiple '-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like compiler but only a single '-arch' option to the preprocessor. Like
this: this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ ./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 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 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 Installation Names
================== ==================
By default, `make install' installs the package's commands under By default, 'make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You '/usr/local/bin', include files under '/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving can specify an installation prefix other than '/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an 'configure' the option '--prefix=PREFIX', where PREFIX must be an
absolute file name. absolute file name.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you 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. PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix. Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular options like '--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories 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 you can set and what kinds of files go in them. In general, the default
default for these options is expressed in terms of `${prefix}', so that for these options is expressed in terms of '${prefix}', so that
specifying just `--prefix' will affect all of the other directory specifying just '--prefix' will affect all of the other directory
specifications that were not explicitly provided. specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the 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 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. having to reconfigure or recompile.
The first method involves providing an override variable for each 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 prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure', '${prefix}'. Any directories that were specified during 'configure',
but not in terms of `${prefix}', must each be overridden at install but not in terms of '${prefix}', must each be overridden at install time
time for the entire installation to be relocated. The approach of for the entire installation to be relocated. The approach of makefile
makefile variable overrides for each directory variable is required by variable overrides for each directory variable is required by the GNU
the GNU Coding Standards, and ideally causes no recompilation. Coding Standards, and ideally causes no recompilation. However, some
However, some platforms have known limitations with the semantics of platforms have known limitations with the semantics of shared libraries
shared libraries that end up requiring recompilation when using this that end up requiring recompilation when using this method, particularly
method, particularly noticeable in packages that use GNU Libtool. noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For The second method involves providing the 'DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend example, 'make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of '/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and 'DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand, does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}' when some directory options were not specified in terms of '${prefix}'
at `configure' time. at 'configure' time.
Optional Features Optional Features
================= =================
If the package supports it, you can cause programs to be installed 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 with an extra prefix or suffix on their names by giving 'configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to Some packages pay attention to '--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package. 'configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where 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 is something like 'gnu-as' or 'x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the 'README' should mention any '--enable-' and '--with-' options that the
package recognizes. 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, find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and you can use the 'configure' options '--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations. '--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the 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 --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 --disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'. overridden with 'make V=0'.
Particular systems Particular systems
================== ==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
CC is not installed, it is recommended to use the following options in is not installed, it is recommended to use the following options in
order to use an ANSI C compiler: order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500" ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX. 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 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
a workaround. If GNU CC is not installed, it is therefore recommended workaround. If GNU CC is not installed, it is therefore recommended to
to try try
./configure CC="cc" ./configure CC="cc"
@ -237,26 +240,26 @@ and if that doesn't work, try
./configure CC="cc -nodtk" ./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 directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb' these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'. in your 'PATH', put it _after_ '/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common', On Haiku, software installed for all users goes in '/boot/common',
not `/usr/local'. It is recommended to use the following options: not '/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common ./configure --prefix=/boot/common
Specifying the System Type 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 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 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 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 '--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: type, such as 'sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM CPU-COMPANY-SYSTEM
@ -265,101 +268,101 @@ where SYSTEM can have one of these forms:
OS OS
KERNEL-OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If 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 'config.sub' isn't included in this package, then this package doesn't
need to know the machine type. need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should 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. produce code for.
If you want to _use_ a cross compiler, that generates code for a If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will "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 Sharing Defaults
================ ================
If you want to set default values for `configure' scripts to share, If you want to set default values for 'configure' scripts to share,
you can create a site shell script called `config.site' that gives you can create a site shell script called 'config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'. default values for variables like 'CC', 'cache_file', and 'prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then 'configure' looks for 'PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the 'PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script. 'CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script. A warning: not all 'configure' scripts look for a site script.
Defining Variables Defining Variables
================== ==================
Variables not defined in a site shell script can be set in the 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 configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set 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 ./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). overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
an Autoconf bug. Until the bug is fixed you can use this workaround: 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. operates.
`--help' '--help'
`-h' '-h'
Print a summary of all of the options to `configure', and exit. Print a summary of all of the options to 'configure', and exit.
`--help=short' '--help=short'
`--help=recursive' '--help=recursive'
Print a summary of the options unique to this package's Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used 'configure', and exit. The 'short' variant lists options used only
only in the top level, while the `recursive' variant lists options in the top level, while the 'recursive' variant lists options also
also present in any nested packages. present in any nested packages.
`--version' '--version'
`-V' '-V'
Print the version of Autoconf used to generate the `configure' Print the version of Autoconf used to generate the 'configure'
script, and exit. script, and exit.
`--cache-file=FILE' '--cache-file=FILE'
Enable the cache: use and save the results of the tests in 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. disable caching.
`--config-cache' '--config-cache'
`-C' '-C'
Alias for `--cache-file=config.cache'. Alias for '--cache-file=config.cache'.
`--quiet' '--quiet'
`--silent' '--silent'
`-q' '-q'
Do not print messages saying which checks are being made. To 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). messages will still be shown).
`--srcdir=DIR' '--srcdir=DIR'
Look for the package's source code in directory DIR. Usually 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' '--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names:: Use DIR as the installation prefix. *note Installation Names:: for
for more details, including other options available for fine-tuning more details, including other options available for fine-tuning the
the installation locations. installation locations.
`--no-create' '--no-create'
`-n' '-n'
Run the configure checks, but stop before creating any output Run the configure checks, but stop before creating any output
files. files.
`configure' also accepts some other, not widely useful, options. Run 'configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details. 'configure --help' for more details.

View File

@ -47,10 +47,13 @@ dist_examplesold_DATA = \
endif endif
EXTRA_DIST = \ EXTRA_DIST = \
po4a \
extra \ extra \
dos \ dos \
windows \ windows \
macosx \ macosx \
cmake \
CMakeLists.txt \
autogen.sh \ autogen.sh \
Doxyfile.in \ Doxyfile.in \
COPYING.GPLv2 \ COPYING.GPLv2 \
@ -63,7 +66,7 @@ EXTRA_DIST = \
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
# List of man pages to conver to PDF and plain text in the dist-hook target. # List of man pages to convert to PDF and plain text in the dist-hook target.
manfiles = \ manfiles = \
src/xz/xz.1 \ src/xz/xz.1 \
src/xzdec/xzdec.1 \ src/xzdec/xzdec.1 \
@ -77,7 +80,8 @@ manfiles = \
# Convert the man pages to PDF and plain text (ASCII only) formats. # Convert the man pages to PDF and plain text (ASCII only) formats.
dist-hook: dist-hook:
if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ 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"; \ > "$(distdir)/ChangeLog"; \
fi fi
if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \ if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \
@ -98,8 +102,11 @@ dist-hook:
fi fi
# This works with GNU tar and gives cleaner package than normal 'make dist'. # 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: mydist:
sh "$(srcdir)/src/liblzma/validate_map.sh" sh "$(srcdir)/src/liblzma/validate_map.sh"
cd "$(srcdir)/po4a" && sh update-po
VERSION=$(VERSION); \ VERSION=$(VERSION); \
if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \
SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \ SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \

553
NEWS
View File

@ -2,6 +2,556 @@
XZ Utils Release Notes XZ Utils Release Notes
====================== ======================
5.2.12 (2023-05-04)
* Fixed a build system bug that prevented building liblzma as a
shared library when configured with --disable-threads. This bug
affected releases 5.2.6 to 5.2.11 and 5.4.0 to 5.4.2.
* Include <intrin.h> for Windows intrinsic functions where they are
needed. This fixed a bug that prevented building liblzma using
clang-cl on Windows.
* Minor update to the Croatian translation. The small change
applies to a string in both 5.2 and 5.4 branches.
5.2.11 (2023-03-18)
* Removed all possible cases of null pointer + 0. It is undefined
behavior in C99 and C17. This was detected by a sanitizer and had
not caused any known issues.
* Build systems:
- Added a workaround for building with GCC on MicroBlaze Linux.
GCC 12 on MicroBlaze doesn't support the __symver__ attribute
even though __has_attribute(__symver__) returns true. The
build is now done without the extra RHEL/CentOS 7 symbols
that were added in XZ Utils 5.2.7. The workaround only
applies to the Autotools build (not CMake).
- CMake: Ensure that the C compiler language is set to C99 or
a newer standard.
- CMake changes from XZ Utils 5.4.1:
* Added a workaround for a build failure with
windres from GNU binutils.
* Included the Windows resource files in the xz
and xzdec build rules.
5.2.10 (2022-12-13)
* xz: Don't modify argv[] when parsing the --memlimit* and
--block-list command line options. This fixes confusing
arguments in process listing (like "ps auxf").
* GNU/Linux only: Use __has_attribute(__symver__) to detect if
that attribute is supported. This fixes build on Mandriva where
Clang is patched to define __GNUC__ to 11 by default (instead
of 4 as used by Clang upstream).
5.2.9 (2022-11-30)
* liblzma:
- Fixed an infinite loop in LZMA encoder initialization
if dict_size >= 2 GiB. (The encoder only supports up
to 1536 MiB.)
- Fixed two cases of invalid free() that can happen if
a tiny allocation fails in encoder re-initialization
or in lzma_filters_update(). These bugs had some
similarities with the bug fixed in 5.2.7.
- Fixed lzma_block_encoder() not allowing the use of
LZMA_SYNC_FLUSH with lzma_code() even though it was
documented to be supported. The sync-flush code in
the Block encoder was already used internally via
lzma_stream_encoder(), so this was just a missing flag
in the lzma_block_encoder() API function.
- GNU/Linux only: Don't put symbol versions into static
liblzma as it breaks things in some cases (and even if
it didn't break anything, symbol versions in static
libraries are useless anyway). The downside of the fix
is that if the configure options --with-pic or --without-pic
are used then it's not possible to build both shared and
static liblzma at the same time on GNU/Linux anymore;
with those options --disable-static or --disable-shared
must be used too.
* New email address for bug reports is <xz@tukaani.org> which
forwards messages to Lasse Collin and Jia Tan.
5.2.8 (2022-11-13)
* xz:
- If xz cannot remove an input file when it should, this
is now treated as a warning (exit status 2) instead of
an error (exit status 1). This matches GNU gzip and it
is more logical as at that point the output file has
already been successfully closed.
- Fix handling of .xz files with an unsupported check type.
Previously such printed a warning message but then xz
behaved as if an error had occurred (didn't decompress,
exit status 1). Now a warning is printed, decompression
is done anyway, and exit status is 2. This used to work
slightly before 5.0.0. In practice this bug matters only
if xz has been built with some check types disabled. As
instructed in PACKAGERS, such builds should be done in
special situations only.
- Fix "xz -dc --single-stream tests/files/good-0-empty.xz"
which failed with "Internal error (bug)". That is,
--single-stream was broken if the first .xz stream in
the input file didn't contain any uncompressed data.
- Fix displaying file sizes in the progress indicator when
working in passthru mode and there are multiple input files.
Just like "gzip -cdf", "xz -cdf" works like "cat" when the
input file isn't a supported compressed file format. In
this case the file size counters weren't reset between
files so with multiple input files the progress indicator
displayed an incorrect (too large) value.
* liblzma:
- API docs in lzma/container.h:
* Update the list of decoder flags in the decoder
function docs.
* Explain LZMA_CONCATENATED behavior with .lzma files
in lzma_auto_decoder() docs.
- OpenBSD: Use HW_NCPUONLINE to detect the number of
available hardware threads in lzma_physmem().
- Fix use of wrong macro to detect x86 SSE2 support.
__SSE2_MATH__ was used with GCC/Clang but the correct
one is __SSE2__. The first one means that SSE2 is used
for floating point math which is irrelevant here.
The affected SSE2 code isn't used on x86-64 so this affects
only 32-bit x86 builds that use -msse2 without -mfpmath=sse
(there is no runtime detection for SSE2). It improves LZMA
compression speed (not decompression).
- Fix the build with Intel C compiler 2021 (ICC, not ICX)
on Linux. It defines __GNUC__ to 10 but doesn't support
the __symver__ attribute introduced in GCC 10.
* Scripts: Ignore warnings from xz by using --quiet --no-warn.
This is needed if the input .xz files use an unsupported
check type.
* Translations:
- Updated Croatian and Turkish translations.
- One new translations wasn't included because it needed
technical fixes. It will be in upcoming 5.4.0. No new
translations will be added to the 5.2.x branch anymore.
- Renamed the French man page translation file from
fr_FR.po to fr.po and thus also its install directory
(like /usr/share/man/fr_FR -> .../fr).
- Man page translations for upcoming 5.4.0 are now handled
in the Translation Project.
* Update doc/faq.txt a little so it's less out-of-date.
5.2.7 (2022-09-30)
* liblzma:
- Made lzma_filters_copy() to never modify the destination
array if an error occurs. lzma_stream_encoder() and
lzma_stream_encoder_mt() already assumed this. Before this
change, if a tiny memory allocation in lzma_filters_copy()
failed it would lead to a crash (invalid free() or invalid
memory reads) in the cleanup paths of these two encoder
initialization functions.
- Added missing integer overflow check to lzma_index_append().
This affects xz --list and other applications that decode
the Index field from .xz files using lzma_index_decoder().
Normal decompression of .xz files doesn't call this code
and thus most applications using liblzma aren't affected
by this bug.
- Single-threaded .xz decoder (lzma_stream_decoder()): If
lzma_code() returns LZMA_MEMLIMIT_ERROR it is now possible
to use lzma_memlimit_set() to increase the limit and continue
decoding. This was supposed to work from the beginning
but there was a bug. With other decoders (.lzma or
threaded .xz decoder) this already worked correctly.
- Fixed accumulation of integrity check type statistics in
lzma_index_cat(). This bug made lzma_index_checks() return
only the type of the integrity check of the last Stream
when multiple lzma_indexes were concatenated. Most
applications don't use these APIs but in xz it made
xz --list not list all check types from concatenated .xz
files. In xz --list --verbose only the per-file "Check:"
lines were affected and in xz --robot --list only the "file"
line was affected.
- Added ABI compatibility with executables that were linked
against liblzma in RHEL/CentOS 7 or other liblzma builds
that had copied the problematic patch from RHEL/CentOS 7
(xz-5.2.2-compat-libs.patch). For the details, see the
comment at the top of src/liblzma/validate_map.sh.
WARNING: This uses __symver__ attribute with GCC >= 10.
In other cases the traditional __asm__(".symver ...")
is used. Using link-time optimization (LTO, -flto) with
GCC versions older than 10 can silently result in
broken liblzma.so.5 (incorrect symbol versions)! If you
want to use -flto with GCC, you must use GCC >= 10.
LTO with Clang seems to work even with the traditional
__asm__(".symver ...") method.
* xzgrep: Fixed compatibility with old shells that break if
comments inside command substitutions have apostrophes (').
This problem was introduced in 5.2.6.
* Build systems:
- New #define in config.h: HAVE_SYMBOL_VERSIONS_LINUX
- Windows: Fixed liblzma.dll build with Visual Studio project
files. It broke in 5.2.6 due to a change that was made to
improve CMake support.
- Windows: Building liblzma with UNICODE defined should now
work.
- CMake files are now actually included in the release tarball.
They should have been in 5.2.5 already.
- Minor CMake fixes and improvements.
* Added a new translation: Turkish
5.2.6 (2022-08-12)
* xz:
- The --keep option now accepts symlinks, hardlinks, and
setuid, setgid, and sticky files. Previously this required
using --force.
- When copying metadata from the source file to the destination
file, don't try to set the group (GID) if it is already set
correctly. This avoids a failure on OpenBSD (and possibly on
a few other OSes) where files may get created so that their
group doesn't belong to the user, and fchown(2) can fail even
if it needs to do nothing.
- Cap --memlimit-compress to 2000 MiB instead of 4020 MiB on
MIPS32 because on MIPS32 userspace processes are limited
to 2 GiB of address space.
* liblzma:
- Fixed a missing error-check in the threaded encoder. If a
small memory allocation fails, a .xz file with an invalid
Index field would be created. Decompressing such a file would
produce the correct output but result in an error at the end.
Thus this is a "mild" data corruption bug. Note that while
a failed memory allocation can trigger the bug, it cannot
cause invalid memory access.
- The decoder for .lzma files now supports files that have
uncompressed size stored in the header and still use the
end of payload marker (end of stream marker) at the end
of the LZMA stream. Such files are rare but, according to
the documentation in LZMA SDK, they are valid.
doc/lzma-file-format.txt was updated too.
- Improved 32-bit x86 assembly files:
* Support Intel Control-flow Enforcement Technology (CET)
* Use non-executable stack on FreeBSD.
- Visual Studio: Use non-standard _MSVC_LANG to detect C++
standard version in the lzma.h API header. It's used to
detect when "noexcept" can be used.
* xzgrep:
- Fixed arbitrary command injection via a malicious filename
(CVE-2022-1271, ZDI-CAN-16587). A standalone patch for
this was released to the public on 2022-04-07. A slight
robustness improvement has been made since then and, if
using GNU or *BSD grep, a new faster method is now used
that doesn't use the old sed-based construct at all. This
also fixes bad output with GNU grep >= 3.5 (2020-09-27)
when xzgrepping binary files.
This vulnerability was discovered by:
cleemy desu wayo working with Trend Micro Zero Day Initiative
- Fixed detection of corrupt .bz2 files.
- Improved error handling to fix exit status in some situations
and to fix handling of signals: in some situations a signal
didn't make xzgrep exit when it clearly should have. It's
possible that the signal handling still isn't quite perfect
but hopefully it's good enough.
- Documented exit statuses on the man page.
- xzegrep and xzfgrep now use "grep -E" and "grep -F" instead
of the deprecated egrep and fgrep commands.
- Fixed parsing of the options -E, -F, -G, -P, and -X. The
problem occurred when multiple options were specied in
a single argument, for example,
echo foo | xzgrep -Fe foo
treated foo as a filename because -Fe wasn't correctly
split into -F -e.
- Added zstd support.
* xzdiff/xzcmp:
- Fixed wrong exit status. Exit status could be 2 when the
correct value is 1.
- Documented on the man page that exit status of 2 is used
for decompression errors.
- Added zstd support.
* xzless:
- Fix less(1) version detection. It failed if the version number
from "less -V" contained a dot.
* Translations:
- Added new translations: Catalan, Croatian, Esperanto,
Korean, Portuguese, Romanian, Serbian, Spanish, Swedish,
and Ukrainian
- Updated the Brazilian Portuguese translation.
- Added French man page translation. This and the existing
German translation aren't complete anymore because the
English man pages got a few updates and the translators
weren't reached so that they could update their work.
* Build systems:
- Windows: Fix building of resource files when config.h isn't
used. CMake + Visual Studio can now build liblzma.dll.
- Various fixes to the CMake support. Building static or shared
liblzma should work fine in most cases. In contrast, building
the command line tools with CMake is still clearly incomplete
and experimental and should be used for testing only.
5.2.5 (2020-03-17)
* liblzma:
- 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:
- 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 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.
- "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:
- Always close a file before trying to delete it to avoid
problems on some operating system and file system combinations.
- Fixed copying of file timestamps on Windows.
- Added experimental (disabled by default) sandbox support using
Capsicum (FreeBSD >= 10). See --enable-sandbox in INSTALL.
* C99/C11 conformance fixes to liblzma. The issues affected at least
some builds using link-time optimizations.
* Fixed bugs in the rarely-used function lzma_index_dup().
* Use of external SHA-256 code is now disabled by default.
It can still be enabled by passing --enable-external-sha256
to configure. The reasons to disable it by default (see INSTALL
for more details):
- Some OS-specific SHA-256 implementations conflict with
OpenSSL and cause problems in programs that link against both
liblzma and libcrypto. At least FreeBSD 10 and MINIX 3.3.0
are affected.
- The internal SHA-256 is faster than the SHA-256 code in
some operating systems.
* Changed CPU core count detection to use sched_getaffinity() on
GNU/Linux and GNU/kFreeBSD.
* Fixes to the build-system and xz to make xz buildable even when
encoders, decoders, or threading have been disabled from libilzma
using configure options. These fixes added two new #defines to
config.h: HAVE_ENCODERS and HAVE_DECODERS.
5.2.2 (2015-09-29)
* Fixed bugs in QNX-specific code.
* Omitted the use of pipe2() even if it is available to avoid
portability issues with some old Linux and glibc combinations.
* Updated German translation.
* Added project files to build static and shared liblzma (not the
whole XZ Utils) with Visual Studio 2013 update 2 or later.
* Documented that threaded decompression hasn't been implemented
yet. A 5.2.0 NEWS entry describing multi-threading support had
incorrectly said "decompression" when it should have said
"compression".
5.2.1 (2015-02-26) 5.2.1 (2015-02-26)
* Fixed a compression-ratio regression in fast mode of LZMA1 and * Fixed a compression-ratio regression in fast mode of LZMA1 and
@ -66,8 +616,9 @@ XZ Utils Release Notes
is non-trivial, so as of writing it is unknown if it will be is non-trivial, so as of writing it is unknown if it will be
backported to the v5.0 branch. backported to the v5.0 branch.
- Multi-threaded decompression can be enabled with the - Multi-threaded compression can be enabled with the
--threads (-T) option. --threads (-T) option.
[Fixed: This originally said "decompression".]
- New command line options in xz: --single-stream, - New command line options in xz: --single-stream,
--block-size=SIZE, --block-list=SIZES, --block-size=SIZE, --block-list=SIZES,

135
README
View File

@ -9,7 +9,7 @@ XZ Utils
1.3. Documentation for liblzma 1.3. Documentation for liblzma
2. Version numbering 2. Version numbering
3. Reporting bugs 3. Reporting bugs
4. Translating the xz tool 4. Translations
5. Other implementations of the .xz format 5. Other implementations of the .xz format
6. Contact information 6. Contact information
@ -55,9 +55,11 @@ XZ Utils
Similarly, it is possible that some day there is a filter that will Similarly, it is possible that some day there is a filter that will
compress better than LZMA2. compress better than LZMA2.
XZ Utils doesn't support multithreaded compression or decompression XZ Utils supports multithreaded compression. XZ Utils doesn't support
yet. It has been planned though and taken into account when designing multithreaded decompression yet. It has been planned though and taken
the .xz file format. 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 1. Documentation
@ -103,17 +105,16 @@ XZ Utils
and data type as Doxygen tags. These docs should be quite OK as and data type as Doxygen tags. These docs should be quite OK as
a quick reference. a quick reference.
I have planned to write a bunch of very well documented example There are a few example/tutorial programs that should help in
programs, which (due to comments) should work as a tutorial to getting started with liblzma. In the source package the examples
various features of liblzma. No such example programs have been are in "doc/examples" and in binary packages they may be under
written yet. "examples" in the same directory as this README.
For now, if you have never used liblzma, libbzip2, or zlib, I Since the liblzma API has similarities to the zlib API, some people
recommend learning the *basics* of the zlib API. Once you know that, may find it useful to read the zlib docs and tutorial too:
it should be easier to learn liblzma.
http://zlib.net/manual.html https://zlib.net/manual.html
http://zlib.net/zlib_how.html https://zlib.net/zlib_how.html
2. Version numbering 2. Version numbering
@ -192,91 +193,18 @@ XZ Utils
system. system.
4. Translating the xz tool 4. Translations
-------------------------- ---------------
The messages from the xz tool have been translated into a few The xz command line tool and all man pages can be translated.
languages. Before starting to translate into a new language, ask The translations are handled via the Translation Project. If you
the author whether someone else hasn't already started working on it. wish to help translating xz, please join the Translation Project:
Test your translation. Testing includes comparing the translated https://translationproject.org/html/translators.html
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.
Testing can be done e.g. by installing xz into a temporary directory: 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
./configure --disable-shared --prefix=/tmp/xz-test repository instead of a 5.2.x release.
# <Edit the .po file in the po directory.>
make -C po update-po
make install
bash debug/translation.bash | less
bash debug/translation.bash | less -S # For --list outputs
Repeat the above as needed (no need to re-run configure though).
Note especially the following:
- The output of --help and --long-help must look nice on
an 80-column terminal. It's OK to add extra lines if needed.
- In contrast, don't add extra lines to error messages and such.
They are often preceded with e.g. a filename on the same line,
so you have no way to predict where to put a \n. Let the terminal
do the wrapping even if it looks ugly. Adding new lines will be
even uglier in the generic case even if it looks nice in a few
limited examples.
- Be careful with column alignment in tables and table-like output
(--list, --list --verbose --verbose, --info-memory, --help, and
--long-help):
* All descriptions of options in --help should start in the
same column (but it doesn't need to be the same column as
in the English messages; just be consistent if you change it).
Check that both --help and --long-help look OK, since they
share several strings.
* --list --verbose and --info-memory print lines that have
the format "Description: %s". If you need a longer
description, you can put extra space between the colon
and %s. Then you may need to add extra space to other
strings too so that the result as a whole looks good (all
values start at the same column).
* The columns of the actual tables in --list --verbose --verbose
should be aligned properly. Abbreviate if necessary. It might
be good to keep at least 2 or 3 spaces between column headings
and avoid spaces in the headings so that the columns stand out
better, but this is a matter of opinion. Do what you think
looks best.
- Be careful to put a period at the end of a sentence when the
original version has it, and don't put it when the original
doesn't have it. Similarly, be careful with \n characters
at the beginning and end of the strings.
- Read the TRANSLATORS comments that have been extracted from the
source code and included in xz.pot. 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.
- 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.
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.
5. Other implementations of the .xz format 5. Other implementations of the .xz format
@ -285,24 +213,23 @@ XZ Utils
7-Zip and the p7zip port of 7-Zip support the .xz format starting 7-Zip and the p7zip port of 7-Zip support the .xz format starting
from the version 9.00alpha. from the version 9.00alpha.
http://7-zip.org/ https://7-zip.org/
http://p7zip.sourceforge.net/ https://p7zip.sourceforge.net/
XZ Embedded is a limited implementation written for use in the Linux XZ Embedded is a limited implementation written for use in the Linux
kernel, but it is also suitable for other embedded use. 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 6. Contact information
---------------------- ----------------------
If you have questions, bug reports, patches etc. related to XZ Utils, If you have questions, bug reports, patches etc. related to XZ Utils,
contact Lasse Collin <lasse.collin@tukaani.org> (in Finnish or English). the project maintainers Lasse Collin and Jia Tan can be reached via
I'm sometimes slow at replying. If you haven't got a reply within two <xz@tukaani.org>.
weeks, assume that your email has got lost and resend it or use IRC.
You can find me also from #tukaani on Freenode; my nick is Larhzu. You might find Lasse also from #tukaani on Libera Chat (IRC).
The channel tends to be pretty quiet, so just ask your question and The nick is Larhzu. The channel tends to be pretty quiet,
someone may wake up. so just ask your question and someone might wake up.

53
THANKS
View File

@ -8,30 +8,47 @@ has been important. :-) In alphabetical order:
- H. Peter Anvin - H. Peter Anvin
- Jeff Bastian - Jeff Bastian
- Nelson H. F. Beebe - Nelson H. F. Beebe
- Karl Beldan
- Karl Berry - Karl Berry
- Anders F. Björklund - Anders F. Björklund
- Emmanuel Blot - Emmanuel Blot
- Melanie Blower
- Alexander Bluhm
- Martin Blumenstingl - Martin Blumenstingl
- Ben Boeckel
- Jakub Bogusz - Jakub Bogusz
- Adam Borowski
- Maarten Bosmans - Maarten Bosmans
- Trent W. Buck - Trent W. Buck
- Kevin R. Bulgrien
- James Buren - James Buren
- David Burklund - David Burklund
- Frank Busse
- Daniel Mealha Cabrita - Daniel Mealha Cabrita
- Milo Casagrande - Milo Casagrande
- Marek Černocký - Marek Černocký
- Tomer Chachamu - Tomer Chachamu
- Vitaly Chikunov
- Antoine Cœur
- Gabi Davar
- Chris Donawa - Chris Donawa
- Andrew Dudman - Andrew Dudman
- Markus Duft - Markus Duft
- İsmail Dönmez - İsmail Dönmez
- Paul Eggert
- Robert Elz - Robert Elz
- Gilles Espinasse - Gilles Espinasse
- Denis Excoffier - Denis Excoffier
- Vincent Fazio
- Michael Felt - Michael Felt
- Michael Fox
- Mike Frysinger - Mike Frysinger
- Daniel Richard G. - Daniel Richard G.
- Tomasz Gajc
- Bjarni Ingi Gislason
- John Paul Adrian Glaubitz
- Bill Glessner - Bill Glessner
- Michał Górny
- Jason Gorski - Jason Gorski
- Juan Manuel Guerrero - Juan Manuel Guerrero
- Diederik de Haas - Diederik de Haas
@ -39,66 +56,100 @@ has been important. :-) In alphabetical order:
- Christian Hesse - Christian Hesse
- Vincenzo Innocente - Vincenzo Innocente
- Peter Ivanov - Peter Ivanov
- Nicholas Jackson
- Sam James
- Jouk Jansen - Jouk Jansen
- Jun I Jin - Jun I Jin
- Kiyoshi Kanazawa
- Per Øyvind Karlsen - Per Øyvind Karlsen
- Iouri Kharon
- Thomas Klausner - Thomas Klausner
- Richard Koch - Richard Koch
- Anton Kochkov
- Ville Koskinen - Ville Koskinen
- Marcin Kowalczyk
- Jan Kratochvil - Jan Kratochvil
- Christian Kujau - Christian Kujau
- Stephan Kulow - Stephan Kulow
- Peter Lawler - Peter Lawler
- James M Leddy - James M Leddy
- Vincent Lefevre
- Hin-Tak Leung - Hin-Tak Leung
- Andraž 'ruskie' Levstik - Andraž 'ruskie' Levstik
- Cary Lewis - Cary Lewis
- Wim Lewis - Wim Lewis
- Xin Li
- Eric Lindblad
- Lorenzo De Liso - Lorenzo De Liso
- H.J. Lu
- Bela Lubkin - Bela Lubkin
- Gregory Margo - Gregory Margo
- Julien Marrec
- Ed Maste
- Martin Matuška
- Ivan A. Melnikov
- Jim Meyering - Jim Meyering
- Arkadiusz Miskiewicz - Arkadiusz Miskiewicz
- Nathan Moinvaziri
- Étienne Mollier
- Conley Moorhous - Conley Moorhous
- Rafał Mużyło - Rafał Mużyło
- Adrien Nader - Adrien Nader
- Evan Nemerson
- Hongbo Ni - Hongbo Ni
- Jonathan Nieder - Jonathan Nieder
- Andre Noll - Andre Noll
- Peter O'Gorman - Peter O'Gorman
- Daniel Packard
- Filip Palian
- Peter Pallinger - Peter Pallinger
- Rui Paulo - Rui Paulo
- Igor Pavlov - Igor Pavlov
- Diego Elio Pettenò - Diego Elio Pettenò
- Elbert Pol - Elbert Pol
- Mikko Pouru - Mikko Pouru
- Rich Prohaska
- Trần Ngọc Quân - Trần Ngọc Quân
- Pavel Raiskup - Pavel Raiskup
- Ole André Vadla Ravnås - Ole André Vadla Ravnås
- Eric S. Raymond
- Robert Readman - Robert Readman
- Bernhard Reutner-Fischer - Bernhard Reutner-Fischer
- Eric S. Raymond - Markus Rickert
- Cristian Rodríguez - Cristian Rodríguez
- Christian von Roques - Christian von Roques
- Boud Roukema
- Torsten Rupp - Torsten Rupp
- Stephen Sachs
- Jukka Salmi - Jukka Salmi
- Alexandre Sauvé - Alexandre Sauvé
- Benno Schulenberg - Benno Schulenberg
- Andreas Schwab - Andreas Schwab
- Bhargava Shastry
- Dan Shechter - Dan Shechter
- Stuart Shelton - Stuart Shelton
- Sebastian Andrzej Siewior
- Ville Skyttä
- Brad Smith - Brad Smith
- Bruce Stark
- Pippijn van Steenhoven
- Jonathan Stott - Jonathan Stott
- Dan Stromberg - Dan Stromberg
- Jia Tan
- Vincent Torri - Vincent Torri
- Paul Townsend - Paul Townsend
- Mohammed Adnène Trojette - Mohammed Adnène Trojette
- Alexey Tourbin - Alexey Tourbin
- Loganaden Velvindron
- Patrick J. Volkerding - Patrick J. Volkerding
- Martin Väth - Martin Väth
- Adam Walling
- Jeffrey Walton
- Christian Weisgerber - Christian Weisgerber
- Dan Weiss
- Bert Wesarg - Bert Wesarg
- Fredrik Wikstrom - Fredrik Wikstrom
- Jim Wilcoxson
- Ralf Wildenhues - Ralf Wildenhues
- Charles Wilson - Charles Wilson
- Lars Wirzenius - Lars Wirzenius

View File

@ -9,14 +9,25 @@
# #
############################################################################### ###############################################################################
# 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 set -e -x
# The following six lines are almost identical to "autoreconf -fi" but faster.
${AUTOPOINT:-autopoint} -f ${AUTOPOINT:-autopoint} -f
${LIBTOOLIZE:-libtoolize} -c -f || glibtoolize -c -f ${LIBTOOLIZE:-libtoolize} -c -f || glibtoolize -c -f
${ACLOCAL:-aclocal} -I m4 ${ACLOCAL:-aclocal} -I m4
${AUTOCONF:-autoconf} ${AUTOCONF:-autoconf}
${AUTOHEADER:-autoheader} ${AUTOHEADER:-autoheader}
${AUTOMAKE:-automake} -acf --foreign ${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.
#
# 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

49
cmake/tuklib_common.cmake Normal file
View File

@ -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()

180
cmake/tuklib_cpucores.cmake Normal file
View File

@ -0,0 +1,180 @@
#
# 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 <sched.h>
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 <sys/param.h>
#include <sys/cpuset.h>
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 <sys/param.h>
#endif
#include <sys/sysctl.h>
int main(void)
{
#ifdef HW_NCPUONLINE
/* This is preferred on OpenBSD, see tuklib_cpucores.c. */
int name[2] = { CTL_HW, HW_NCPUONLINE };
#else
int name[2] = { CTL_HW, HW_NCPU };
#endif
int cpus;
size_t cpus_size = sizeof(cpus);
sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
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 <unistd.h>
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 <sys/param.h>
#include <sys/pstat.h>
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 TUKLIB_CPUCORES_FOUND)
message(STATUS
"Checking how to detect the number of available CPU cores")
tuklib_cpucores_internal_check()
if(DEFINED 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()

102
cmake/tuklib_integer.cmake Normal file
View File

@ -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()

20
cmake/tuklib_mbstr.cmake Normal file
View File

@ -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()

150
cmake/tuklib_physmem.cmake Normal file
View File

@ -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 <sys/systemcfg.h>
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 <unistd.h>
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 <sys/param.h>
#endif
#include <sys/sysctl.h>
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 <sys/param.h>
#include <sys/pstat.h>
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 TUKLIB_PHYSMEM_FOUND)
message(STATUS "Checking how to detect the amount of physical memory")
tuklib_physmem_internal_check()
if(DEFINED 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()

View File

@ -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()

View File

@ -15,14 +15,14 @@
# of malloc(), stat(), or lstat(), since we don't use those functions in # of malloc(), stat(), or lstat(), since we don't use those functions in
# a way that would cause the problems the autoconf macros check. # 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]), AC_INIT([XZ Utils], m4_esyscmd([/bin/sh build-aux/version.sh]),
[lasse.collin@tukaani.org], [xz], [http://tukaani.org/xz/]) [xz@tukaani.org], [xz], [https://tukaani.org/xz/])
AC_CONFIG_SRCDIR([src/liblzma/common/common.h]) AC_CONFIG_SRCDIR([src/liblzma/common/common.h])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADER([config.h]) AC_CONFIG_HEADERS([config.h])
echo echo
echo "$PACKAGE_STRING" echo "$PACKAGE_STRING"
@ -34,8 +34,8 @@ AC_CANONICAL_HOST
# We do some special things on Windows (32-bit or 64-bit) builds. # We do some special things on Windows (32-bit or 64-bit) builds.
case $host_os in case $host_os in
mingw* | cygwin*) is_w32=yes ;; mingw* | cygwin | msys) is_w32=yes ;;
*) is_w32=no ;; *) is_w32=no ;;
esac esac
AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes]) AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
@ -43,9 +43,15 @@ AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
# executables. Cygwin is an exception to this, since it is recommended # executables. Cygwin is an exception to this, since it is recommended
# that symlinks don't have the .exe suffix. To make this work, we # that symlinks don't have the .exe suffix. To make this work, we
# define LN_EXEEXT. # define LN_EXEEXT.
#
# MSYS2 is treated the same way as Cygwin. It uses plain "msys" like
# the original MSYS when building MSYS/MSYS2-binaries. Hopefully this
# doesn't break things for the original MSYS developers. Note that this
# doesn't affect normal MSYS/MSYS2 users building non-MSYS/MSYS2 binaries
# since in that case the $host_os is usually mingw32.
case $host_os in case $host_os in
cygwin) LN_EXEEXT= ;; cygwin | msys) LN_EXEEXT= ;;
*) LN_EXEEXT='$(EXEEXT)' ;; *) LN_EXEEXT='$(EXEEXT)' ;;
esac esac
AC_SUBST([LN_EXEEXT]) AC_SUBST([LN_EXEEXT])
@ -91,6 +97,7 @@ AC_ARG_ENABLE([encoders], AS_HELP_STRING([--enable-encoders=LIST],
[], [enable_encoders=SUPPORTED_FILTERS]) [], [enable_encoders=SUPPORTED_FILTERS])
enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'` enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'`
if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then
enable_encoders=no
AC_MSG_RESULT([(none)]) AC_MSG_RESULT([(none)])
else else
for arg in $enable_encoders for arg in $enable_encoders
@ -108,6 +115,8 @@ else
;; ;;
esac esac
done done
AC_DEFINE([HAVE_ENCODERS], [1],
[Define to 1 if any of HAVE_ENCODER_foo have been defined.])
AC_MSG_RESULT([$enable_encoders]) AC_MSG_RESULT([$enable_encoders])
fi fi
@ -118,6 +127,7 @@ AC_ARG_ENABLE([decoders], AS_HELP_STRING([--enable-decoders=LIST],
[], [enable_decoders=SUPPORTED_FILTERS]) [], [enable_decoders=SUPPORTED_FILTERS])
enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'` enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'`
if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then
enable_decoders=no
AC_MSG_RESULT([(none)]) AC_MSG_RESULT([(none)])
else else
for arg in $enable_decoders for arg in $enable_decoders
@ -135,11 +145,8 @@ else
;; ;;
esac esac
done done
AC_DEFINE([HAVE_DECODERS], [1],
# LZMA2 requires that LZMA1 is enabled. [Define to 1 if any of HAVE_DECODER_foo have been defined.])
test "x$enable_encoder_lzma2" = xyes && enable_encoder_lzma1=yes
test "x$enable_decoder_lzma2" = xyes && enable_decoder_lzma1=yes
AC_MSG_RESULT([$enable_decoders]) AC_MSG_RESULT([$enable_decoders])
fi fi
@ -148,8 +155,8 @@ if test "x$enable_encoder_lzma2$enable_encoder_lzma1" = xyesno \
AC_MSG_ERROR([LZMA2 requires that LZMA1 is also enabled.]) AC_MSG_ERROR([LZMA2 requires that LZMA1 is also enabled.])
fi fi
AM_CONDITIONAL(COND_MAIN_ENCODER, test "x$enable_encoders" != xno && test "x$enable_encoders" != x) AM_CONDITIONAL(COND_MAIN_ENCODER, test "x$enable_encoders" != xno)
AM_CONDITIONAL(COND_MAIN_DECODER, test "x$enable_decoders" != xno && test "x$enable_decoders" != x) AM_CONDITIONAL(COND_MAIN_DECODER, test "x$enable_decoders" != xno)
m4_foreach([NAME], [SUPPORTED_FILTERS], m4_foreach([NAME], [SUPPORTED_FILTERS],
[AM_CONDITIONAL(COND_FILTER_[]m4_toupper(NAME), test "x$enable_filter_[]NAME" = xyes) [AM_CONDITIONAL(COND_FILTER_[]m4_toupper(NAME), test "x$enable_filter_[]NAME" = xyes)
@ -203,6 +210,10 @@ AC_ARG_ENABLE([match-finders], AS_HELP_STRING([--enable-match-finders=LIST],
[enable_match_finders=SUPPORTED_MATCH_FINDERS]) [enable_match_finders=SUPPORTED_MATCH_FINDERS])
enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'` enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'`
if test "x$enable_encoder_lz" = xyes ; then if test "x$enable_encoder_lz" = xyes ; then
if test -z "$enable_match_finders"; then
AC_MSG_ERROR([At least one match finder is required for an LZ-based encoder.])
fi
for arg in $enable_match_finders for arg in $enable_match_finders
do do
case $arg in m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS], [ case $arg in m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS], [
@ -268,6 +279,20 @@ m4_foreach([NAME], [SUPPORTED_CHECKS],
[AM_CONDITIONAL(COND_CHECK_[]m4_toupper(NAME), test "x$enable_check_[]NAME" = xyes) [AM_CONDITIONAL(COND_CHECK_[]m4_toupper(NAME), test "x$enable_check_[]NAME" = xyes)
])dnl ])dnl
AC_MSG_CHECKING([if external SHA-256 should be used])
AC_ARG_ENABLE([external-sha256], AS_HELP_STRING([--enable-external-sha256],
[Use SHA-256 code from the operating system.
See INSTALL for possible subtle problems.]),
[], [enable_external_sha256=no])
if test "x$enable_check_sha256" != "xyes"; then
enable_external_sha256=no
fi
if test "x$enable_external_sha256" = xyes; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
########################### ###########################
# Assembler optimizations # # Assembler optimizations #
@ -283,7 +308,7 @@ if test "x$enable_assembler" = xyes; then
case $host_os in case $host_os in
# Darwin should work too but only if not creating universal # Darwin should work too but only if not creating universal
# binaries. Solaris x86 could work too but I cannot test. # binaries. Solaris x86 could work too but I cannot test.
linux* | *bsd* | mingw* | cygwin* | *djgpp*) linux* | *bsd* | mingw* | cygwin | msys | *djgpp*)
case $host_cpu in case $host_cpu in
i?86) enable_assembler=x86 ;; i?86) enable_assembler=x86 ;;
x86_64) enable_assembler=x86_64 ;; x86_64) enable_assembler=x86_64 ;;
@ -409,18 +434,21 @@ AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
AC_ARG_ENABLE([xzdec], [AS_HELP_STRING([--disable-xzdec], AC_ARG_ENABLE([xzdec], [AS_HELP_STRING([--disable-xzdec],
[do not build xzdec])], [do not build xzdec])],
[], [enable_xzdec=yes]) [], [enable_xzdec=yes])
test "x$enable_decoders" = xno && enable_xzdec=no
AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno]) AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
AC_ARG_ENABLE([lzmadec], [AS_HELP_STRING([--disable-lzmadec], AC_ARG_ENABLE([lzmadec], [AS_HELP_STRING([--disable-lzmadec],
[do not build lzmadec [do not build lzmadec
(it exists primarily for LZMA Utils compatibility)])], (it exists primarily for LZMA Utils compatibility)])],
[], [enable_lzmadec=yes]) [], [enable_lzmadec=yes])
test "x$enable_decoder_lzma1" = xno && enable_lzmadec=no
AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno]) AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
AC_ARG_ENABLE([lzmainfo], [AS_HELP_STRING([--disable-lzmainfo], AC_ARG_ENABLE([lzmainfo], [AS_HELP_STRING([--disable-lzmainfo],
[do not build lzmainfo [do not build lzmainfo
(it exists primarily for LZMA Utils compatibility)])], (it exists primarily for LZMA Utils compatibility)])],
[], [enable_lzmainfo=yes]) [], [enable_lzmainfo=yes])
test "x$enable_decoder_lzma1" = xno && enable_lzmainfo=no
AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno]) AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
AC_ARG_ENABLE([lzma-links], [AS_HELP_STRING([--disable-lzma-links], AC_ARG_ENABLE([lzma-links], [AS_HELP_STRING([--disable-lzma-links],
@ -441,31 +469,54 @@ AC_ARG_ENABLE([doc], [AS_HELP_STRING([--disable-doc],
AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno]) AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
##################### ##############
# Symbol versioning # # Sandboxing #
##################### ##############
AC_MSG_CHECKING([if library symbol versioning should be used]) AC_MSG_CHECKING([if sandboxing should be used])
AC_ARG_ENABLE([symbol-versions], [AS_HELP_STRING([--enable-symbol-versions], AC_ARG_ENABLE([sandbox], [AS_HELP_STRING([--enable-sandbox=METHOD],
[Use symbol versioning for liblzma. Enabled by default on [Sandboxing METHOD can be `auto', `no', or `capsicum'.
GNU/Linux, other GNU-based systems, and FreeBSD.])], The default is `auto' which enables sandboxing if
[], [enable_symbol_versions=auto]) a supported sandboxing method is found.])],
if test "x$enable_symbol_versions" = xauto; then [], [enable_sandbox=auto])
case $host_os in case $enable_sandbox in
# NOTE: Even if one omits -gnu on GNU/Linux (e.g. auto)
# i486-slackware-linux), configure will (via config.sub) AC_MSG_RESULT([maybe (autodetect)])
# append -gnu (e.g. i486-slackware-linux-gnu), and this ;;
# test will work correctly. no | capsicum)
gnu* | *-gnu* | freebsd*) AC_MSG_RESULT([$enable_sandbox])
enable_symbol_versions=yes ;;
;; *)
*) AC_MSG_RESULT([])
enable_symbol_versions=no AC_MSG_ERROR([--enable-sandbox only accepts `auto', `no', or `capsicum'.])
;; ;;
esac 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 fi
AC_MSG_RESULT([$enable_symbol_versions]) AC_SUBST([enable_path_for_scripts])
AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
############################################################################### ###############################################################################
@ -473,6 +524,16 @@ AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
############################################################################### ###############################################################################
echo 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 gl_POSIX_SHELL
if test -z "$POSIX_SHELL" && test "x$enable_scripts" = xyes ; then if test -z "$POSIX_SHELL" && test "x$enable_scripts" = xyes ; then
AC_MSG_ERROR([No POSIX conforming shell (sh) was found.]) AC_MSG_ERROR([No POSIX conforming shell (sh) was found.])
@ -483,12 +544,15 @@ echo "Initializing Automake:"
# We don't use "subdir-objects" yet because it breaks "make distclean" when # We don't use "subdir-objects" yet because it breaks "make distclean" when
# dependencies are enabled (as of Automake 1.14.1) due to this bug: # dependencies are enabled (as of Automake 1.14.1) due to this bug:
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 # https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354
# The -Wno-unsupported is used to silence warnings about missing # The -Wno-unsupported is used to silence warnings about missing
# "subdir-objects". # "subdir-objects".
AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported]) AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
AC_PROG_LN_S AC_PROG_LN_S
dnl # Autoconf >= 2.70 warns that AC_PROG_CC_C99 is obsolete. However,
dnl # we have to keep using AC_PROG_CC_C99 instead of AC_PROG_CC
dnl # as long as we try to be compatible with Autoconf 2.69.
AC_PROG_CC_C99 AC_PROG_CC_C99
if test x$ac_cv_prog_cc_c99 = xno ; then if test x$ac_cv_prog_cc_c99 = xno ; then
AC_MSG_ERROR([No C99 compiler was found.]) AC_MSG_ERROR([No C99 compiler was found.])
@ -498,8 +562,8 @@ AM_PROG_CC_C_O
AM_PROG_AS AM_PROG_AS
AC_USE_SYSTEM_EXTENSIONS AC_USE_SYSTEM_EXTENSIONS
case $enable_threads in AS_CASE([$enable_threads],
posix) [posix], [
echo echo
echo "POSIX threading support:" echo "POSIX threading support:"
AX_PTHREAD([:]) dnl We don't need the HAVE_PTHREAD macro. AX_PTHREAD([:]) dnl We don't need the HAVE_PTHREAD macro.
@ -527,24 +591,24 @@ case $enable_threads in
AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock]) AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock])
AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]]) AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
CFLAGS=$OLD_CFLAGS CFLAGS=$OLD_CFLAGS
;; ],
win95) [win95], [
AC_DEFINE([MYTHREAD_WIN95], [1], [Define to 1 when using AC_DEFINE([MYTHREAD_WIN95], [1], [Define to 1 when using
Windows 95 (and thus XP) compatible threads. Windows 95 (and thus XP) compatible threads.
This avoids use of features that were added in This avoids use of features that were added in
Windows Vista.]) Windows Vista.])
;; ],
vista) [vista], [
AC_DEFINE([MYTHREAD_VISTA], [1], [Define to 1 when using AC_DEFINE([MYTHREAD_VISTA], [1], [Define to 1 when using
Windows Vista compatible threads. This uses Windows Vista compatible threads. This uses
features that are not available on Windows XP.]) features that are not available on Windows XP.])
;; ]
esac )
AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno]) AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
echo echo
echo "Initializing Libtool:" echo "Initializing Libtool:"
LT_PREREQ([2.2]) LT_PREREQ([2.4])
LT_INIT([win32-dll]) LT_INIT([win32-dll])
LT_LANG([Windows Resource]) LT_LANG([Windows Resource])
@ -554,14 +618,121 @@ LT_LANG([Windows Resource])
# libs as shared. # libs as shared.
AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno]) AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
#####################
# Symbol versioning #
#####################
# NOTE: This checks if we are building shared or static library
# and if --with-pic or --without-pic was used. Thus this check
# must be after Libtool initialization.
AC_MSG_CHECKING([if library symbol versioning should be used])
AC_ARG_ENABLE([symbol-versions], [AS_HELP_STRING([--enable-symbol-versions],
[Use symbol versioning for liblzma. Enabled by default on
GNU/Linux, other GNU-based systems, and FreeBSD.])],
[], [enable_symbol_versions=auto])
if test "x$enable_symbol_versions" = xauto; then
case $host_os in
# NOTE: Even if one omits -gnu on GNU/Linux (e.g.
# i486-slackware-linux), configure will (via config.sub)
# append -gnu (e.g. i486-slackware-linux-gnu), and this
# test will work correctly.
gnu* | *-gnu* | freebsd*)
enable_symbol_versions=yes
;;
*)
enable_symbol_versions=no
;;
esac
fi
# There are two variants for symbol versioning.
# See src/liblzma/validate_map.sh for details.
#
# On GNU/Linux, extra symbols are added in the C code. These extra symbols
# must not be put into a static library as they can cause problems (and
# even if they didn't cause problems, they would be useless). On other
# systems symbol versioning may be used too but there is no problem as only
# a linker script is specified in src/liblzma/Makefile.am and that isn't
# used when creating a static library.
#
# Libtool always uses -DPIC when building shared libraries by default and
# doesn't use it for static libs by default. This can be overriden with
# --with-pic and --without-pic though. As long as neither --with-pic nor
# --without-pic is used then we can use #ifdef PIC to detect if the file is
# being built for a shared library.
if test "x$enable_symbol_versions" = xno ; then
enable_symbol_versions=no
AC_MSG_RESULT([no])
elif test "x$enable_shared" = xno ; then
enable_symbol_versions=no
AC_MSG_RESULT([no (not building a shared library)])
else
case "$host_cpu-$host_os" in
microblaze*)
# GCC 12 on MicroBlaze doesn't support __symver__
# attribute. It's simplest and safest to use the
# generic version on that platform since then only
# the linker script is needed. The RHEL/CentOS 7
# compatibility symbols don't matter on MicroBlaze.
enable_symbol_versions=generic
;;
*-linux*)
case "$pic_mode-$enable_static" in
default-*)
# Use symvers if PIC is defined.
have_symbol_versions_linux=2
;;
*-no)
# Not building static library.
# Use symvers unconditionally.
have_symbol_versions_linux=1
;;
*)
AC_MSG_RESULT([])
AC_MSG_ERROR([
On GNU/Linux, building both shared and static library at the same time
is not supported if --with-pic or --without-pic is used.
Use either --disable-shared or --disable-static to build one type
of library at a time. If both types are needed, build one at a time,
possibly picking only src/liblzma/.libs/liblzma.a from the static build.])
;;
esac
enable_symbol_versions=linux
AC_DEFINE_UNQUOTED([HAVE_SYMBOL_VERSIONS_LINUX],
[$have_symbol_versions_linux],
[Define to 1 to if GNU/Linux-specific details
are unconditionally wanted for symbol
versioning. Define to 2 to if these are wanted
only if also PIC is defined (allows building
both shared and static liblzma at the same
time with Libtool if neither --with-pic nor
--without-pic is used). This define must be
used together with liblzma_linux.map.])
;;
*)
enable_symbol_versions=generic
;;
esac
AC_MSG_RESULT([yes ($enable_symbol_versions)])
fi
AM_CONDITIONAL([COND_SYMVERS_LINUX],
[test "x$enable_symbol_versions" = xlinux])
AM_CONDITIONAL([COND_SYMVERS_GENERIC],
[test "x$enable_symbol_versions" = xgeneric])
############################################################################### ###############################################################################
# Checks for libraries. # 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
echo "Initializing gettext:" echo "Initializing gettext:"
AM_GNU_GETTEXT_VERSION([0.18]) AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
AM_GNU_GETTEXT_VERSION([0.19.6])
AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT([external])
@ -586,10 +757,6 @@ AC_CHECK_HEADERS([immintrin.h])
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
############################################################################### ###############################################################################
dnl We don't need these as long as we need a C99 compiler anyway.
dnl AC_C_INLINE
dnl AC_C_RESTRICT
AC_HEADER_STDBOOL AC_HEADER_STDBOOL
AC_TYPE_UINT8_T AC_TYPE_UINT8_T
@ -624,10 +791,10 @@ AC_C_BIGENDIAN
gl_GETOPT gl_GETOPT
# Find the best function to set timestamps. # Find the best function to set timestamps.
AC_CHECK_FUNCS([futimens futimes futimesat utimes utime], [break]) AC_CHECK_FUNCS([futimens futimes futimesat utimes _futime utime], [break])
# These are nice to have but not mandatory. # This is nice to have but not mandatory.
AC_CHECK_FUNCS([posix_fadvise pipe2]) AC_CHECK_FUNCS([posix_fadvise])
TUKLIB_PROGNAME TUKLIB_PROGNAME
TUKLIB_INTEGER TUKLIB_INTEGER
@ -635,34 +802,34 @@ TUKLIB_PHYSMEM
TUKLIB_CPUCORES TUKLIB_CPUCORES
TUKLIB_MBSTR TUKLIB_MBSTR
# Check for system-provided SHA-256. At least the following is supported: # If requested, check for system-provided SHA-256. At least the following
# implementations are supported:
# #
# OS Headers Library Type Function # OS Headers Library Type Function
# FreeBSD sys/types.h + sha256.h libmd SHA256_CTX SHA256_Init # FreeBSD sys/types.h + sha256.h libmd SHA256_CTX SHA256_Init
# NetBSD sys/types.h + sha2.h SHA256_CTX SHA256_Init # NetBSD sys/types.h + sha2.h SHA256_CTX SHA256_Init
# OpenBSD sys/types.h + sha2.h SHA2_CTX SHA256Init # OpenBSD sys/types.h + sha2.h SHA2_CTX SHA256Init
# Solaris sys/types.h + sha2.h libmd SHA256_CTX SHA256Init # Solaris sys/types.h + sha2.h libmd SHA256_CTX SHA256Init
# MINIX 3 sys/types.h + minix/sha2.h libutil SHA256_CTX SHA256_Init # MINIX 3 sys/types.h + sha2.h SHA256_CTX SHA256_Init
# Darwin CommonCrypto/CommonDigest.h CC_SHA256_CTX CC_SHA256_Init # Darwin CommonCrypto/CommonDigest.h CC_SHA256_CTX CC_SHA256_Init
# #
# Note that Darwin's CC_SHA256_Update takes buffer size as uint32_t instead # Note that Darwin's CC_SHA256_Update takes buffer size as uint32_t instead
# of size_t. # of size_t.
# #
# We don't check for e.g. OpenSSL or libgcrypt because we don't want sha256_header_found=no
# to introduce dependencies to other packages by default. Maybe such sha256_type_found=no
# libraries could be supported via additional configure options though. sha256_func_found=no
# AS_IF([test "x$enable_external_sha256" = "xyes"], [
if test "x$enable_check_sha256" = "xyes"; then
# Test for Common Crypto before others, because Darwin has sha256.h # Test for Common Crypto before others, because Darwin has sha256.h
# too and we don't want to use that, because on older versions it # too and we don't want to use that, because on older versions it
# uses OpenSSL functions, whose SHA256_Init is not guaranteed to # uses OpenSSL functions, whose SHA256_Init is not guaranteed to
# succeed. # succeed.
sha256_header_found=no
AC_CHECK_HEADERS( AC_CHECK_HEADERS(
[CommonCrypto/CommonDigest.h sha256.h sha2.h minix/sha2.h], [CommonCrypto/CommonDigest.h sha256.h sha2.h],
[sha256_header_found=yes ; break]) [sha256_header_found=yes ; break])
if test "x$sha256_header_found" = xyes; then if test "x$sha256_header_found" = xyes; then
AC_CHECK_TYPES([CC_SHA256_CTX, SHA256_CTX, SHA2_CTX], [], [], AC_CHECK_TYPES([CC_SHA256_CTX, SHA256_CTX, SHA2_CTX],
[sha256_type_found=yes], [],
[[#ifdef HAVE_SYS_TYPES_H [[#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h> # include <sys/types.h>
#endif #endif
@ -674,22 +841,24 @@ if test "x$enable_check_sha256" = "xyes"; then
#endif #endif
#ifdef HAVE_SHA2_H #ifdef HAVE_SHA2_H
# include <sha2.h> # include <sha2.h>
#endif
#ifdef HAVE_MINIX_SHA2_H
# include <minix/sha2.h>
#endif]]) #endif]])
AC_SEARCH_LIBS([SHA256_Init], [md util]) if test "x$sha256_type_found" = xyes ; then
AC_SEARCH_LIBS([SHA256Init], [md]) AC_SEARCH_LIBS([SHA256Init], [md])
AC_CHECK_FUNCS([CC_SHA256_Init SHA256_Init SHA256Init], AC_SEARCH_LIBS([SHA256_Init], [md])
[break]) AC_CHECK_FUNCS([CC_SHA256_Init SHA256Init SHA256_Init],
[sha256_func_found=yes ; break])
fi
fi fi
])
AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$sha256_func_found" = xno])
if test "x$enable_external_sha256$sha256_func_found" = xyesno; then
AC_MSG_ERROR([--enable-external-sha256 was specified but no supported external SHA-256 implementation was found])
fi fi
AM_CONDITIONAL([COND_INTERNAL_SHA256],
[test "x$ac_cv_func_SHA256_Init" != xyes \
&& test "x$ac_cv_func_SHA256Init" != xyes \
&& test "x$ac_cv_func_CC_SHA256_Init" != xyes])
# Check for SSE2 intrinsics. # Check for SSE2 intrinsics. There is no run-time detection for SSE2 so if
# compiler options enable SSE2 then SSE2 support is required by the binaries.
# The compile-time check for SSE2 is done with #ifdefs because some compilers
# (ICC, MSVC) allow SSE2 intrinsics even when SSE2 isn't enabled.
AC_CHECK_DECL([_mm_movemask_epi8], AC_CHECK_DECL([_mm_movemask_epi8],
[AC_DEFINE([HAVE__MM_MOVEMASK_EPI8], [1], [AC_DEFINE([HAVE__MM_MOVEMASK_EPI8], [1],
[Define to 1 if _mm_movemask_epi8 is available.])], [Define to 1 if _mm_movemask_epi8 is available.])],
@ -698,6 +867,23 @@ AC_CHECK_DECL([_mm_movemask_epi8],
#include <immintrin.h> #include <immintrin.h>
#endif]) #endif])
# Check for sandbox support. If one is found, set enable_sandbox=found.
AS_CASE([$enable_sandbox],
[auto | capsicum], [
AX_CHECK_CAPSICUM([enable_sandbox=found], [:])
]
)
# If a specific sandboxing method was explicitly requested and it wasn't
# found, give an error.
case $enable_sandbox in
auto | no | found)
;;
*)
AC_MSG_ERROR([$enable_sandbox support not found])
;;
esac
############################################################################### ###############################################################################
# If using GCC, set some additional AM_CFLAGS: # If using GCC, set some additional AM_CFLAGS:
@ -715,7 +901,7 @@ if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then
AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY" AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY"
fi fi
if test "$GCC" = yes ; then AS_IF([test "$GCC" = yes], [
# Enable as much warnings as possible. These commented warnings won't # Enable as much warnings as possible. These commented warnings won't
# work for this package though: # work for this package though:
# * -Wunreachable-code breaks several assert(0) cases, which are # * -Wunreachable-code breaks several assert(0) cases, which are
@ -771,7 +957,7 @@ if test "$GCC" = yes ; then
if test "x$enable_werror" = "xyes"; then if test "x$enable_werror" = "xyes"; then
AM_CFLAGS="$AM_CFLAGS -Werror" AM_CFLAGS="$AM_CFLAGS -Werror"
fi fi
fi ])
############################################################################### ###############################################################################

View File

@ -173,7 +173,7 @@ compress(lzma_stream *strm, FILE *infile, FILE *outfile)
lzma_ret ret = lzma_code(strm, action); lzma_ret ret = lzma_code(strm, action);
// If the output buffer is full or if the compression finished // If the output buffer is full or if the compression finished
// successfully, write the data from the output bufffer to // successfully, write the data from the output buffer to
// the output file. // the output file.
if (strm->avail_out == 0 || ret == LZMA_STREAM_END) { if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
// When lzma_code() has returned LZMA_STREAM_END, // When lzma_code() has returned LZMA_STREAM_END,

View File

@ -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, // Once the end of the input file has been reached,
// we need to tell lzma_code() that no more input // we need to tell lzma_code() that no more input
// will be coming. As said before, this isn't required // 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. // initializing the decoder.
if (feof(infile)) if (feof(infile))
action = LZMA_FINISH; action = LZMA_FINISH;

View File

@ -33,7 +33,7 @@ A: 7-Zip and LZMA SDK are the original projects. LZMA SDK is roughly
LZMA Utils. LZMA Utils.
There are several other projects using LZMA. Most are more or less There are several other projects using LZMA. Most are more or less
based on LZMA SDK. See <http://7-zip.org/links.html>. based on LZMA SDK. See <https://7-zip.org/links.html>.
Q: Why is liblzma named liblzma if its primary file format is .xz? Q: Why is liblzma named liblzma if its primary file format is .xz?
@ -115,7 +115,6 @@ Q: I cannot find BCJ and BCJ2 filters. Don't they exist in liblzma?
A: BCJ filter is called "x86" in liblzma. BCJ2 is not included, A: BCJ filter is called "x86" in liblzma. BCJ2 is not included,
because it requires using more than one encoded output stream. because it requires using more than one encoded output stream.
A streamable version of BCJ2-style filtering is planned.
Q: I need to use a script that runs "xz -9". On a system with 256 MiB Q: I need to use a script that runs "xz -9". On a system with 256 MiB
@ -154,19 +153,15 @@ A: See the documentation in XZ Embedded. In short, something like
dictionary doesn't increase memory usage. dictionary doesn't increase memory usage.
Q: Will xz support threaded compression? Q: How is multi-threaded compression implemented in XZ Utils?
A: It is planned and has been taken into account when designing A: The simplest method is splitting the uncompressed data into blocks
the .xz file format. Eventually there will probably be three types
of threading, each method having its own advantages and disadvantages.
The simplest method is splitting the uncompressed data into blocks
and compressing them in parallel independent from each other. and compressing them in parallel independent from each other.
This is currently the only threading method supported in XZ Utils.
Since the blocks are compressed independently, they can also be Since the blocks are compressed independently, they can also be
decompressed independently. Together with the index feature in .xz, decompressed independently. Together with the index feature in .xz,
this allows using threads to create .xz files for random-access this allows using threads to create .xz files for random-access
reading. This also makes threaded decompression possible, although reading. This also makes threaded decompression possible.
it is not clear if threaded decompression will ever be implemented.
The independent blocks method has a couple of disadvantages too. It The independent blocks method has a couple of disadvantages too. It
will compress worse than a single-block method. Often the difference will compress worse than a single-block method. Often the difference
@ -174,15 +169,17 @@ A: It is planned and has been taken into account when designing
the memory usage of the compressor increases linearly when adding the memory usage of the compressor increases linearly when adding
threads. threads.
Match finder parallelization is another threading method. It has At least two other threading methods are possible but these haven't
been in 7-Zip for ages. It doesn't affect compression ratio or been implemented in XZ Utils:
memory usage significantly. Among the three threading methods, only
this is useful when compressing small files (files that are not Match finder parallelization has been in 7-Zip for ages. It doesn't
significantly bigger than the dictionary). Unfortunately this method affect compression ratio or memory usage significantly. Among the
scales only to about two CPU cores. three threading methods, only this is useful when compressing small
files (files that are not significantly bigger than the dictionary).
Unfortunately this method scales only to about two CPU cores.
The third method is pigz-style threading (I use that name, because The third method is pigz-style threading (I use that name, because
pigz <http://www.zlib.net/pigz/> uses that method). It doesn't pigz <https://www.zlib.net/pigz/> uses that method). It doesn't
affect compression ratio significantly and scales to many cores. affect compression ratio significantly and scales to many cores.
The memory usage scales linearly when threads are added. This isn't The memory usage scales linearly when threads are added. This isn't
significant with pigz, because Deflate uses only a 32 KiB dictionary, significant with pigz, because Deflate uses only a 32 KiB dictionary,
@ -193,12 +190,35 @@ A: It is planned and has been taken into account when designing
cores the overhead is not a big deal anymore. cores the overhead is not a big deal anymore.
Combining the threading methods will be possible and also useful. Combining the threading methods will be possible and also useful.
E.g. combining match finder parallelization with pigz-style threading For example, combining match finder parallelization with pigz-style
can cut the memory usage by 50 %. threading or independent-blocks-threading can cut the memory usage
by 50 %.
It is possible that the single-threaded method will be modified to
create files identical to the pigz-style method. We'll see once Q: I told xz to use many threads but it is using only one or two
pigz-style threading has been implemented in liblzma. processor cores. What is wrong?
A: Since multi-threaded compression is done by splitting the data into
blocks that are compressed individually, if the input file is too
small for the block size, then many threads cannot be used. The
default block size increases when the compression level is
increased. For example, xz -6 uses 8 MiB LZMA2 dictionary and
24 MiB blocks, and xz -9 uses 64 MiB LZMA dictionary and 192 MiB
blocks. If the input file is 100 MiB, xz -6 can use five threads
of which one will finish quickly as it has only 4 MiB to compress.
However, for the same file, xz -9 can only use one thread.
One can adjust block size with --block-size=SIZE but making the
block size smaller than LZMA2 dictionary is waste of RAM: using
xz -9 with 6 MiB blocks isn't any better than using xz -6 with
6 MiB blocks. The default settings use a block size bigger than
the LZMA2 dictionary size because this was seen as a reasonable
compromise between RAM usage and compression ratio.
When decompressing, the ability to use threads depends on how the
file was created. If it was created in multi-threaded mode then
it can be decompressed in multi-threaded mode too if there are
multiple blocks in the file.
Q: How do I build a program that needs liblzmadec (lzmadec.h)? Q: How do I build a program that needs liblzmadec (lzmadec.h)?
@ -206,7 +226,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 A: liblzmadec is part of LZMA Utils. XZ Utils has liblzma, but no
liblzmadec. The code using liblzmadec should be ported to use liblzmadec. The code using liblzmadec should be ported to use
liblzma instead. If you cannot or don't want to do that, download liblzma instead. If you cannot or don't want to do that, download
LZMA Utils from <http://tukaani.org/lzma/>. LZMA Utils from <https://tukaani.org/lzma/>.
Q: The default build of liblzma is too big. How can I make it smaller? Q: The default build of liblzma is too big. How can I make it smaller?
@ -220,5 +240,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 If the result is still too big, take a look at XZ Embedded. It is
a separate project, which provides a limited but significantly a separate project, which provides a limited but significantly
smaller XZ decoder implementation than XZ Utils. You can find it smaller XZ decoder implementation than XZ Utils. You can find it
at <http://tukaani.org/xz/embedded.html>. at <https://tukaani.org/xz/embedded.html>.

View File

@ -40,7 +40,11 @@ The .lzma File Format
0.2. Changes 0.2. Changes
Last modified: 2011-04-12 11:55+0300 Last modified: 2022-07-13 21:00+0300
Compared to the previous version (2011-04-12 11:55+0300)
the section 1.1.3 was modified to allow End of Payload Marker
with a known Uncompressed Size.
1. File Format 1. File Format
@ -129,7 +133,10 @@ The .lzma File Format
Uncompressed Size is stored as unsigned 64-bit little endian Uncompressed Size is stored as unsigned 64-bit little endian
integer. A special value of 0xFFFF_FFFF_FFFF_FFFF indicates integer. A special value of 0xFFFF_FFFF_FFFF_FFFF indicates
that Uncompressed Size is unknown. End of Payload Marker (*) that Uncompressed Size is unknown. End of Payload Marker (*)
is used if and only if Uncompressed Size is unknown. is used if Uncompressed Size is unknown. End of Payload Marker
is allowed but rarely used if Uncompressed Size is known.
XZ Utils 5.2.5 and older don't support .lzma files that have
End of Payload Marker together with a known Uncompressed Size.
XZ Utils rejects files whose Uncompressed Size field specifies XZ Utils rejects files whose Uncompressed Size field specifies
a known size that is 256 GiB or more. This is to reject false a known size that is 256 GiB or more. This is to reject false

View File

@ -6,52 +6,50 @@ Introduction
This document explains how to build XZ Utils for DOS using DJGPP. This document explains how to build XZ Utils for DOS using DJGPP.
The resulting binaries should run at least on various DOS versions The resulting binaries should run at least on various DOS versions
and under Windows 95/98/98SE/ME, although the Windows version of and under Windows 95/98/98SE/ME.
XZ Utils is recommended under Windows 95 and later.
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 Note: Makefile and config.h are updated only now and then. This
means that especially if you checked out a development version, means that if you checked out a development version, building for
building for DOS probably won't work without updating Makefile DOS might not work without updating Makefile and config.h first.
and config.h first.
Getting and Installing DJGPP Getting and Installing DJGPP
You may use <http://www.delorie.com/djgpp/zip-picker.html> to help You may use <https://www.delorie.com/djgpp/zip-picker.html> to help
deciding what to download, but as of writing (2010-10-09) that may deciding what to download. If you are only interested in building
not be the most convenient way taking into account what components XZ Utils, the zip-picker may list files that you don't strictly
are actually required to build XZ Utils. However, using the need. However, using the zip-picker can still be worth it to get a
zip-picker can still be worth doing to get nice short summary of nice short summary of installation instructions (they can be found
installation instructions (they can be found from readme.1st too). from readme.1st too).
For a more manual method, first select a mirror from For a more manual method, first select a mirror from
<http://www.delorie.com/djgpp/getting.html>. You need <https://www.delorie.com/djgpp/getting.html> and go the
the following files: subdirectory named "current". You need the following files:
unzip32.exe (if you don't already have a LFN-capable unzipper) unzip32.exe (if you don't already have a LFN-capable unzipper)
beta/v2/djdev204.zip v2/djdev205.zip
v2gnu/bnu219b.zip v2gnu/bnu234b.zip
v2gnu/gcc444b.zip v2gnu/gcc920b.zip
v2gnu/mak3791b.zip v2gnu/mak43b.zip
v2misc/csdpmi7b.zip v2misc/csdpmi7b.zip
If newer versions are available, probably you should try them first. 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 Note that versions older than djdev205.zip aren't supported. Also
least djdev204.zip. Also note that you want csdpmi7b.zip even if you note that you want csdpmi7b.zip even if you run under Windows or
run under Windows or DOSEMU, because the XZ Utils Makefile will embed DOSEMU because the XZ Utils Makefile will embed cwsdstub.exe to
cwsdstub.exe to the resulting binaries. 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. a short summary, but you should still read readme.1st.
C:\> mkdir DJGPP C:\> mkdir DJGPP
C:\> cd DJGPP C:\> cd DJGPP
C:\DJGPP> c:\download\unzip32 c:\download\djdev204.zip C:\DJGPP> c:\download\unzip32 c:\download\djdev205.zip
C:\DJGPP> c:\download\unzip32 c:\download\bnu219b.zip C:\DJGPP> c:\download\unzip32 c:\download\bnu234b.zip
C:\DJGPP> c:\download\unzip32 c:\download\gcc444b.zip C:\DJGPP> c:\download\unzip32 c:\download\gcc920b.zip
C:\DJGPP> c:\download\unzip32 c:\download\mak3791b.zip C:\DJGPP> c:\download\unzip32 c:\download\mak43b.zip
C:\DJGPP> c:\download\unzip32 c:\download\csdpmi7b.zip C:\DJGPP> c:\download\unzip32 c:\download\csdpmi7b.zip
C:\DJGPP> set PATH=C:\DJGPP\BIN;%PATH% 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 Once you have built XZ Utils, the resulting binaries can be run
without long filename support. without long filename support.
Run "make" in this directory (the directory containing this README). Run "make" in this directory (the directory containing this
You should get xz.exe (and a bunch of temporary files). Other tools INSTALL.txt). You should get xz.exe (and a bunch of temporary files).
are not built. Having e.g. xzdec.exe doesn't save much space compared Other tools are not built. Having e.g. xzdec.exe doesn't save much
to xz.exe, because the DJGPP runtime makes the .exe quite big anyway. space compared to xz.exe because the DJGPP runtime makes the .exe
quite big anyway.

View File

@ -18,9 +18,7 @@ CPPFLAGS =
CFLAGS = -g -Wall -Wextra -Wfatal-errors -march=i386 -mtune=i686 -O2 CFLAGS = -g -Wall -Wextra -Wfatal-errors -march=i386 -mtune=i686 -O2
LDFLAGS = -lemu LDFLAGS = -lemu
# NOTE: -fgnu89-inline is needed on DJGPP 2.04 beta and GCC >= 4.3.0 ALL_CFLAGS = -std=gnu99
# because time.h uses GNU-style "extern inline".
ALL_CFLAGS = -std=gnu99 -fgnu89-inline
ALL_CPPFLAGS = \ ALL_CPPFLAGS = \
-I. \ -I. \

View File

@ -10,6 +10,9 @@
/* Define to 1 if sha256 integrity check is enabled. */ /* Define to 1 if sha256 integrity check is enabled. */
#define HAVE_CHECK_SHA256 1 #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 to 1 if arm decoder is enabled. */
#define HAVE_DECODER_ARM 1 #define HAVE_DECODER_ARM 1
@ -37,6 +40,9 @@
/* Define to 1 if x86 decoder is enabled. */ /* Define to 1 if x86 decoder is enabled. */
#define HAVE_DECODER_X86 1 #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 to 1 if arm encoder is enabled. */
#define HAVE_ENCODER_ARM 1 #define HAVE_ENCODER_ARM 1
@ -110,17 +116,25 @@
/* Define to 1 if the system has the type `_Bool'. */ /* Define to 1 if the system has the type `_Bool'. */
#define HAVE__BOOL 1 #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 to 1 to disable debugging code. */
#define NDEBUG 1 #define NDEBUG 1
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org" #define PACKAGE_BUGREPORT "xz@tukaani.org"
/* Define to the full name of this package. */ /* Define to the full name of this package. */
#define PACKAGE_NAME "XZ Utils" #define PACKAGE_NAME "XZ Utils"
/* Define to the home page for this package. */ /* 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. */ /* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4 #define SIZEOF_SIZE_T 4

View File

@ -37,6 +37,10 @@
/* 5 8 Uncompressed size (little endian). -1 means unknown size */ /* 5 8 Uncompressed size (little endian). -1 means unknown size */
/* 13 Compressed data */ /* 13 Compressed data */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define BUFSIZE 4096 #define BUFSIZE 4096
int find_lzma_header(unsigned char *buf) { int find_lzma_header(unsigned char *buf) {
@ -48,7 +52,7 @@ int find_lzma_header(unsigned char *buf) {
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
char buf[BUFSIZE]; unsigned char buf[BUFSIZE];
int ret, i, numlzma, blocks=0; int ret, i, numlzma, blocks=0;
if (argc != 2) { if (argc != 2) {

3
m4/.gitignore vendored
View File

@ -1,8 +1,10 @@
codeset.m4 codeset.m4
extern-inline.m4
fcntl-o.m4 fcntl-o.m4
gettext.m4 gettext.m4
glibc2.m4 glibc2.m4
glibc21.m4 glibc21.m4
host-cpu-c-abi.m4
iconv.m4 iconv.m4
intdiv0.m4 intdiv0.m4
intl.m4 intl.m4
@ -32,7 +34,6 @@ stdint_h.m4
threadlib.m4 threadlib.m4
uintmax_t.m4 uintmax_t.m4
ulonglong.m4 ulonglong.m4
visibility.m4
wchar_t.m4 wchar_t.m4
wint_t.m4 wint_t.m4
xsize.m4 xsize.m4

85
m4/ax_check_capsicum.m4 Normal file
View File

@ -0,0 +1,85 @@
# -*- Autoconf -*-
# SYNOPSIS
#
# AX_CHECK_CAPSICUM([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro searches for an installed Capsicum header and library,
# and if found:
# - AC_DEFINE([HAVE_CAPSICUM]) is called.
# - AC_DEFINE([HAVE_SYS_CAPSICUM_H]) is called if <sys/capsicum.h>
# is present (otherwise <sys/capability.h> must be used).
# - CAPSICUM_LIB is set to the -l option needed to link Capsicum support,
# and AC_SUBST([CAPSICUM_LIB]) is called.
# - The shell commands in ACTION-IF-FOUND are run. The default
# ACTION-IF-FOUND prepends ${CAPSICUM_LIB} into LIBS. If you don't
# want to modify LIBS and don't need to run any other commands either,
# use a colon as ACTION-IF-FOUND.
#
# If Capsicum support isn't found:
# - The shell commands in ACTION-IF-NOT-FOUND are run. The default
# ACTION-IF-NOT-FOUND calls AC_MSG_WARN to print a warning that
# Capsicum support wasn't found.
#
# You should use autoheader to include a definition for the symbols above
# in a config.h file.
#
# Sample usage in a C/C++ source is as follows:
#
# #ifdef HAVE_CAPSICUM
# # ifdef HAVE_SYS_CAPSICUM_H
# # include <sys/capsicum.h>
# # else
# # include <sys/capability.h>
# # endif
# #endif /* HAVE_CAPSICUM */
#
# LICENSE
#
# Copyright (c) 2014 Google Inc.
# Copyright (c) 2015 Lasse Collin <lasse.collin@tukaani.org>
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
#serial 2
AC_DEFUN([AX_CHECK_CAPSICUM], [
# On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>.
# If this header is found, it is assumed to be the right one.
capsicum_header_found=no
AC_CHECK_HEADERS([sys/capsicum.h], [capsicum_header_found=yes])
if test "$capsicum_header_found" = no ; then
# On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists
# on Linux too but it describes POSIX.1e capabilities. Look for the
# declaration of cap_rights_limit to check if <sys/capability.h> is
# a Capsicum header.
AC_CHECK_DECL([cap_rights_limit], [capsicum_header_found=yes], [],
[#include <sys/capability.h>])
fi
capsicum_lib_found=no
CAPSICUM_LIB=
if test "$capsicum_header_found" = yes ; then
AC_LANG_PUSH([C])
# FreeBSD >= 10.x has Capsicum functions in libc.
AC_LINK_IFELSE([AC_LANG_CALL([], [cap_rights_limit])],
[capsicum_lib_found=yes], [])
# Linux has Capsicum functions in libcaprights.
AC_CHECK_LIB([caprights], [cap_rights_limit],
[CAPSICUM_LIB=-lcaprights
capsicum_lib_found=yes], [])
AC_LANG_POP([C])
fi
AC_SUBST([CAPSICUM_LIB])
if test "$capsicum_lib_found" = yes ; then
AC_DEFINE([HAVE_CAPSICUM], [1], [Define to 1 if Capsicum is available.])
m4_default([$1], [LIBS="${CAPSICUM_LIB} $LIBS"])
else
m4_default([$2], [AC_MSG_WARN([Capsicum support not found])])
fi])

View File

@ -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 # SYNOPSIS
@ -14,24 +14,28 @@
# flags that are needed. (The user can also force certain compiler # flags that are needed. (The user can also force certain compiler
# flags/libs to be tested by setting these environment variables.) # flags/libs to be tested by setting these environment variables.)
# #
# Also sets PTHREAD_CC to any special C compiler that is needed for # Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is
# multi-threaded programs (defaults to the value of CC otherwise). (This # needed for multi-threaded programs (defaults to the value of CC
# is necessary on AIX to use the special cc_r compiler alias.) # respectively CXX otherwise). (This is necessary on e.g. AIX to use the
# special cc_r/CC_r compiler alias.)
# #
# NOTE: You are assumed to not only compile your program with these flags, # 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 # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
# $PTHREAD_CXX $CXXFLAGS $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: # variables in your default LIBS, CFLAGS, and CC:
# #
# LIBS="$PTHREAD_LIBS $LIBS" # LIBS="$PTHREAD_LIBS $LIBS"
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
# CC="$PTHREAD_CC" # CC="$PTHREAD_CC"
# CXX="$PTHREAD_CXX"
# #
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name # has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
# #
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with # PTHREAD_PRIO_INHERIT symbol is defined when compiling with
@ -55,6 +59,7 @@
# #
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG> # Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
# Copyright (c) 2019 Marc Stevens <marc.stevens@cwi.nl>
# #
# This program is free software: you can redistribute it and/or modify it # 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 # under the terms of the GNU General Public License as published by the
@ -67,7 +72,7 @@
# Public License for more details. # Public License for more details.
# #
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>. # with this program. If not, see <https://www.gnu.org/licenses/>.
# #
# As a special exception, the respective Autoconf Macro's copyright owner # As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure # gives unlimited permission to copy, distribute and modify the configure
@ -82,35 +87,41 @@
# modified version of the Autoconf Macro, you may extend this special # modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well. # exception to the GPL to apply to your modified version as well.
#serial 21 #serial 31
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [ AC_DEFUN([AX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_SED])
AC_LANG_PUSH([C]) AC_LANG_PUSH([C])
ax_pthread_ok=no ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h # 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. # It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS, # First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using # etcetera environment variables, and if threads linking works using
# them: # them:
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
save_CFLAGS="$CFLAGS" 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"])
AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"])
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS" LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
AC_MSG_RESULT([$ax_pthread_ok]) 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_LIBS=""
PTHREAD_CFLAGS="" PTHREAD_CFLAGS=""
fi fi
LIBS="$save_LIBS" CC="$ax_pthread_save_CC"
CFLAGS="$save_CFLAGS" CFLAGS="$ax_pthread_save_CFLAGS"
LIBS="$ax_pthread_save_LIBS"
fi fi
# We must check for the threads library under a number of different # We must check for the threads library under a number of different
@ -118,12 +129,14 @@ fi
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX). # libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are # Create a list of thread flags to try. Items with a "," contain both
# C compiler flags, and other items are library names, except for "none" # C compiler flags (before ",") and linker flags (after ","). Other items
# which indicates that we try without any flags at all, and "pthread-config" # starting with a "-" are C compiler flags, and remaining items are
# which is a program returning the flags for the Pth emulation library. # 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 -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 # The ordering *is* (sometimes) important. Some notes on the
# individual items follow: # individual items follow:
@ -132,82 +145,163 @@ ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mt
# none: in case threads are in libc; should be tried before -Kthread and # none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings # other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # (Note: HP C rejects this with "bad form for `-t' option")
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc (Note: HP C also rejects)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too; # doesn't hurt to check since this sometimes defines pthreads and
# also defines -D_REENTRANT) # -D_REENTRANT too), HP C (must be checked before -lpthread, which
# ... -mt is also the pthreads flag for HP/aCC # 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 # pthread: Linux, etcetera
# --thread-safe: KAI C++ # --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library) # 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*) solaris*)
# On Solaris (at least, for some versions), libc contains stubbed # On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based # (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthreads/-mt/ # tests will erroneously succeed. (N.B.: The stubs are missing
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # pthread_cleanup_push, or rather a function called by this macro,
# a function called by this macro, so we could check for that, but # so we could check for that, but who knows whether they'll stub
# who knows whether they'll stub that too in a future libc.) So, # that too in a future libc.) So we'll check first for the
# we'll just look for -pthreads and -lpthread first: # standard Solaris way of linking pthreads (-mt -lpthread).
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags"
;;
darwin*)
ax_pthread_flags="-pthread $ax_pthread_flags"
;; ;;
esac esac
# Clang doesn't consider unrecognized options an error unless we specify # Are we compiling with Clang?
# -Werror. We throw in some extra Clang-specific options to ensure that
# this doesn't happen for GCC, which also accepts -Werror.
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) AC_CACHE_CHECK([whether $CC is Clang],
save_CFLAGS="$CFLAGS" [ax_cv_PTHREAD_CLANG],
ax_pthread_extra_flags="-Werror" [ax_cv_PTHREAD_CLANG=no
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" # Note that Autoconf sets GCC=yes for Clang as well as GCC
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], if test "x$GCC" = "xyes"; then
[AC_MSG_RESULT([yes])], AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
[ax_pthread_extra_flags= [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
AC_MSG_RESULT([no])]) # if defined(__clang__) && defined(__llvm__)
CFLAGS="$save_CFLAGS" AX_PTHREAD_CC_IS_CLANG
# endif
],
[ax_cv_PTHREAD_CLANG=yes])
fi
])
ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
if test x"$ax_pthread_ok" = xno; then
for flag in $ax_pthread_flags; do
case $flag in # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
# 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
AS_IF([test "x$GCC" = "xyes"],
[ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"])
# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first
AS_IF([test "x$ax_pthread_clang" = "xyes"],
[ax_pthread_flags="-pthread,-lpthread -pthread"])
# 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)"])
if test "x$ax_pthread_ok" = "xno"; then
for ax_pthread_try_flag in $ax_pthread_flags; do
case $ax_pthread_try_flag in
none) none)
AC_MSG_CHECKING([whether pthreads work without any flags]) AC_MSG_CHECKING([whether pthreads work without any flags])
;; ;;
*,*)
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"])
;;
-*) -*)
AC_MSG_CHECKING([whether pthreads work with $flag]) AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
PTHREAD_CFLAGS="$flag" PTHREAD_CFLAGS="$ax_pthread_try_flag"
;; ;;
pthread-config) pthread-config)
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) 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_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;; ;;
*) *)
AC_MSG_CHECKING([for the pthreads library -l$flag]) AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
PTHREAD_LIBS="-l$flag" PTHREAD_LIBS="-l$ax_pthread_try_flag"
;; ;;
esac esac
save_LIBS="$LIBS" ax_pthread_save_CFLAGS="$CFLAGS"
save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS" LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
# Check for various functions. We must include pthread.h, # Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we # since some functions may be macros. (On the Sequent, we
@ -218,8 +312,18 @@ for flag in $ax_pthread_flags; do
# pthread_cleanup_push because it is one of the few pthread # pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub. # functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles. # We try pthread_create on general principles.
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
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; }], static void *start_routine(void *a) { return a; }],
[pthread_t th; pthread_attr_t attr; [pthread_t th; pthread_attr_t attr;
pthread_create(&th, 0, start_routine, 0); pthread_create(&th, 0, start_routine, 0);
@ -227,101 +331,187 @@ for flag in $ax_pthread_flags; do
pthread_attr_init(&attr); pthread_attr_init(&attr);
pthread_cleanup_push(routine, 0); pthread_cleanup_push(routine, 0);
pthread_cleanup_pop(0) /* ; */])], pthread_cleanup_pop(0) /* ; */])],
[ax_pthread_ok=yes], [ax_pthread_ok=yes],
[]) [])
LIBS="$save_LIBS" CFLAGS="$ax_pthread_save_CFLAGS"
CFLAGS="$save_CFLAGS" LIBS="$ax_pthread_save_LIBS"
AC_MSG_RESULT([$ax_pthread_ok]) AC_MSG_RESULT([$ax_pthread_ok])
if test "x$ax_pthread_ok" = xyes; then AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
break;
fi
PTHREAD_LIBS="" PTHREAD_LIBS=""
PTHREAD_CFLAGS="" PTHREAD_CFLAGS=""
done done
fi 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: # Various other checks:
if test "x$ax_pthread_ok" = xyes; then if test "x$ax_pthread_ok" = "xyes"; then
save_LIBS="$LIBS" ax_pthread_save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS" ax_pthread_save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED. # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_MSG_CHECKING([for joinable pthread attribute]) AC_CACHE_CHECK([for joinable pthread attribute],
attr_name=unknown [ax_cv_PTHREAD_JOINABLE_ATTR],
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
[int attr = $attr; return attr /* ; */])], AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
[attr_name=$attr; break], [int attr = $ax_pthread_attr; return attr /* ; */])],
[]) [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
done [])
AC_MSG_RESULT([$attr_name]) done
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then ])
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
[Define to necessary symbol if this constant test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
uses a non-standard name on your system.]) test "x$ax_pthread_joinable_attr_defined" != "xyes"],
fi [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_MSG_CHECKING([if more special flags are required for pthreads]) AC_CACHE_CHECK([whether more special flags are required for pthreads],
flag=no [ax_cv_PTHREAD_SPECIAL_FLAGS],
case ${host_os} in [ax_cv_PTHREAD_SPECIAL_FLAGS=no
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; case $host_os in
osf* | hpux*) flag="-D_REENTRANT";; solaris*)
solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
if test "$GCC" = "yes"; then ;;
flag="-D_REENTRANT" esac
else ])
# TODO: What about Clang on Solaris? AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
flag="-mt -D_REENTRANT" test "x$ax_pthread_special_flags_added" != "xyes"],
fi [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
;; ax_pthread_special_flags_added=yes])
esac
AC_MSG_RESULT([$flag])
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
[ax_cv_PTHREAD_PRIO_INHERIT], [ [ax_cv_PTHREAD_PRIO_INHERIT],
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
[[int i = PTHREAD_PRIO_INHERIT;]])], [[int i = PTHREAD_PRIO_INHERIT;
[ax_cv_PTHREAD_PRIO_INHERIT=yes], return i;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=no]) [ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
]) ])
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) 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="$ax_pthread_save_CFLAGS"
CFLAGS="$save_CFLAGS" LIBS="$ax_pthread_save_LIBS"
# More AIX lossage: compile with *_r variant # More AIX lossage: compile with *_r variant
if test "x$GCC" != xyes; then if test "x$GCC" != "xyes"; then
case $host_os in case $host_os in
aix*) aix*)
AS_CASE(["x/$CC"], 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], [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 [#handle absolute path differently from PATH based program lookup
AS_CASE(["x$CC"], AS_CASE(["x$CC"],
[x/*], [x/*],
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], [
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])
AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])])
],
[
AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])
AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])])
]
)
])
;; ;;
esac esac
fi fi
fi fi
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX"
AC_SUBST([PTHREAD_LIBS]) AC_SUBST([PTHREAD_LIBS])
AC_SUBST([PTHREAD_CFLAGS]) AC_SUBST([PTHREAD_CFLAGS])
AC_SUBST([PTHREAD_CC]) AC_SUBST([PTHREAD_CC])
AC_SUBST([PTHREAD_CXX])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: # 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]) ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
: :
else else

View File

@ -10,6 +10,8 @@
# #
# Supported methods: # Supported methods:
# - GetSystemInfo(): Windows (including Cygwin) # - GetSystemInfo(): Windows (including Cygwin)
# - sched_getaffinity(): glibc (GNU/Linux, GNU/kFreeBSD)
# - cpuset_getaffinity(): FreeBSD
# - sysctl(): BSDs, OS/2 # - sysctl(): BSDs, OS/2
# - sysconf(): GNU/Linux, Solaris, Tru64, IRIX, AIX, QNX, Cygwin (but # - sysconf(): GNU/Linux, Solaris, Tru64, IRIX, AIX, QNX, Cygwin (but
# GetSystemInfo() is used on Cygwin) # GetSystemInfo() is used on Cygwin)
@ -45,8 +47,29 @@ compile error
#endif #endif
]])], [tuklib_cv_cpucores_method=special], [ ]])], [tuklib_cv_cpucores_method=special], [
# glibc-based systems (GNU/Linux and GNU/kFreeBSD) have sched_getaffinity().
# The CPU_COUNT() macro was added in glibc 2.9 so we try to link the
# test program instead of merely compiling it. glibc 2.9 is old enough that
# if someone uses the code on older glibc, the fallback to sysconf() should
# be good enough.
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <sched.h>
int
main(void)
{
cpu_set_t cpu_mask;
sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask);
return CPU_COUNT(&cpu_mask);
}
]])], [tuklib_cv_cpucores_method=sched_getaffinity], [
# FreeBSD has both cpuset and sysctl. Look for cpuset first because # FreeBSD has both cpuset and sysctl. Look for cpuset first because
# it's a better approach. # 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.
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <sys/param.h> #include <sys/param.h>
#include <sys/cpuset.h> #include <sys/cpuset.h>
@ -80,7 +103,12 @@ compile error
int int
main(void) main(void)
{ {
#ifdef HW_NCPUONLINE
/* This is preferred on OpenBSD, see tuklib_cpucores.c. */
int name[2] = { CTL_HW, HW_NCPUONLINE };
#else
int name[2] = { CTL_HW, HW_NCPU }; int name[2] = { CTL_HW, HW_NCPU };
#endif
int cpus; int cpus;
size_t cpus_size = sizeof(cpus); size_t cpus_size = sizeof(cpus);
sysctl(name, 2, &cpus, &cpus_size, NULL, 0); sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
@ -120,9 +148,14 @@ main(void)
]])], [tuklib_cv_cpucores_method=pstat_getdynamic], [ ]])], [tuklib_cv_cpucores_method=pstat_getdynamic], [
tuklib_cv_cpucores_method=unknown tuklib_cv_cpucores_method=unknown
])])])])])]) ])])])])])])])
case $tuklib_cv_cpucores_method in case $tuklib_cv_cpucores_method in
sched_getaffinity)
AC_DEFINE([TUKLIB_CPUCORES_SCHED_GETAFFINITY], [1],
[Define to 1 if the number of available CPU cores
can be detected with sched_getaffinity()])
;;
cpuset) cpuset)
AC_DEFINE([TUKLIB_CPUCORES_CPUSET], [1], AC_DEFINE([TUKLIB_CPUCORES_CPUSET], [1],
[Define to 1 if the number of available CPU cores [Define to 1 if the number of available CPU cores

View File

@ -7,7 +7,7 @@
# #
# Checks for tuklib_integer.h: # Checks for tuklib_integer.h:
# - Endianness # - 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 # - Does the hardware support fast unaligned access to 16-bit
# and 32-bit integers # and 32-bit integers
# #
@ -22,13 +22,28 @@
AC_DEFUN_ONCE([TUKLIB_INTEGER], [ AC_DEFUN_ONCE([TUKLIB_INTEGER], [
AC_REQUIRE([TUKLIB_COMMON]) AC_REQUIRE([TUKLIB_COMMON])
AC_REQUIRE([AC_C_BIGENDIAN]) 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. AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported])
if test x$ac_cv_header_byteswap_h = xyes ; then AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [ [[__builtin_bswap16(1);
AC_MSG_CHECKING([if FUNC is available]) __builtin_bswap32(1);
AC_LINK_IFELSE([AC_LANG_SOURCE([ __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 <byteswap.h> #include <byteswap.h>
int int
main(void) main(void)
@ -36,14 +51,15 @@ main(void)
FUNC[](42); FUNC[](42);
return 0; return 0;
} }
])], [ ])], [
AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1], AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1],
[Define to 1 if] FUNC [is available.]) [Define to 1 if] FUNC [is available.])
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
], [AC_MSG_RESULT([no])]) ], [AC_MSG_RESULT([no])])
])dnl ])dnl
fi fi
])
AC_MSG_CHECKING([if unaligned memory access should be used]) AC_MSG_CHECKING([if unaligned memory access should be used])
AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access], AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access],
@ -71,4 +87,33 @@ if test "x$enable_unaligned_access" = xyes ; then
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
fi 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 ])dnl

77
m4/visibility.m4 Normal file
View File

@ -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.])
])

View File

@ -1,6 +1,23 @@
ca
cs cs
da
de de
eo
es
fi
fr fr
hr
hu
it it
ko
pl pl
pt
pt_BR
ro
sr
sv
tr
uk
vi vi
zh_CN
zh_TW

1076
po/ca.po Normal file

File diff suppressed because it is too large Load Diff

596
po/cs.po

File diff suppressed because it is too large Load Diff

896
po/da.po Normal file
View File

@ -0,0 +1,896 @@
# Danish translation xz.
# This file is put in the public domain.
# Joe Hansen <joedalton2@yahoo.dk>, 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 <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\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 %<PRIu32> threads."
msgstr "Bruger op til %<PRIu32> 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 <dansk@dansk-gruppen.dk>.\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=%<PRIu32>"
msgstr "Den valgte matchfinder kræver mindst nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: med --format=raw, --suffix=.SUF er krævet med mindre der skrives til standardud"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Filnavn har ukendt endelse, udelader"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "Værdien for tilvalget »%s« skal være i intervallet [%<PRIu64>, %<PRIu64>]"
#: 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"

635
po/de.po

File diff suppressed because it is too large Load Diff

984
po/eo.po Normal file
View File

@ -0,0 +1,984 @@
# Esperanto translations for xz package.
# This file is put in the public domain.
# Keith Bowes <zooplah@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: 2022-07-03 18:21-0400\n"
"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\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"
#: src/xz/args.c:63
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Nevalida parametro por --block-list"
#: src/xz/args.c:73
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Tro da argumentoj por --block-list"
#: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list"
msgstr "0 povas nur esti uzata kiel la lasta elemento en --block-list"
#: src/xz/args.c:406
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Nekonata dosierformata tipo"
#: src/xz/args.c:429 src/xz/args.c:437
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Nekomprenata tipo de integra kontrolo"
#: src/xz/args.c:473
msgid "Only one file can be specified with `--files' or `--files0'."
msgstr "Nur oni dosiero estas specifebla per `--files' aŭ `--files0'."
#: src/xz/args.c:541
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La medivariablo %s enhavas troajn argumentoj"
#: src/xz/args.c:643
msgid "Compression support was disabled at build time"
msgstr "Rego de kunpremado estas malaktivigita dum muntotempo"
#: src/xz/args.c:650
msgid "Decompression support was disabled at build time"
msgstr "Rego de malkunpremado estas malaktivigita dum muntotempo"
#: src/xz/coder.c:110
msgid "Maximum number of filters is four"
msgstr "Maksimuma nombra da filtriloj estas kvar"
#: src/xz/coder.c:129
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Memoruzada limo estas tra malgranda por la donita filtrila elekto."
#: src/xz/coder.c:159
msgid "Using a preset in raw mode is discouraged."
msgstr "Uzi aprioraĵon en kruda reĝimo estas malkonsilinda."
#: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions."
msgstr "La ĝustaj elektoj de la aprioraĵoj povas varii inter eldonoj."
#: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "La .lzma-formato regas sole la filtrilon LZMA1"
#: src/xz/coder.c:192
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA ne estas uzebla por la .xz-formato"
#: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout"
msgstr "La filtrila ĉeno estas nekongrua kun --flush-timeout"
#: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Ŝanĝas al unufadena reĝimo pro --flush-timeout"
#: src/xz/coder.c:235
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Uzas ĝis %<PRIu32> fadenoj"
#: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options"
msgstr "Nekomprenata filtrila ĉeno aŭ elektoj"
#: src/xz/coder.c:263
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Malkunpremado postulos %s megabajtojn da memoro."
#: 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 "Alĝustigis la nombron da fadenoj de %s ĝis %s por ne superi la memoruzadan limo de %s megabajtoj"
#: 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 "Alĝŭstigis vortara grando de LZMA%c de %s megabajtoj ĝis %s megabajtoj por ne superi la memoruzadan limon de %s megabajtoj"
#: src/xz/file_io.c:110 src/xz/file_io.c:118
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Eraro dum krei dukton: %s"
#: src/xz/file_io.c:173
msgid "Sandbox is disabled due to incompatible command line arguments"
msgstr "Sablujo estas malaktiva pro nekongruaj komandliniaj parametroj"
#: src/xz/file_io.c:216
msgid "Sandbox was successfully enabled"
msgstr "Sablujo estas sukcese aktivigita"
#: src/xz/file_io.c:220
msgid "Failed to enable the sandbox"
msgstr "Malsukcesis aktivigi la sablujon"
#: src/xz/file_io.c:262
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() malsukcesis: %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: Dosiero ŝajne estis movita, ne forigos"
#: src/xz/file_io.c:339 src/xz/file_io.c:878
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Ne eblas forigi: %s"
#: src/xz/file_io.c:364
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Ne eblas agordi la dosieran estron: %s"
#: src/xz/file_io.c:370
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Ne eblas agordi la dosieran grupon: %s"
#: src/xz/file_io.c:389
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Ne eblas agordi la dosierajn atingopermesojn: %s"
#: src/xz/file_io.c:515
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Eraro dum atingi la dosierstatajn flagojn de ĉefenigujon: %s"
#: src/xz/file_io.c:572 src/xz/file_io.c:634
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Estas simbola ligilo, preterpasas"
#: src/xz/file_io.c:663
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Estas dosierujo, preterpasas"
#: src/xz/file_io.c:669
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Ne regula dosiero, preterpasas"
#: src/xz/file_io.c:686
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Dosiero havas setuid- aŭ setgid-bito, preterpasas"
#: src/xz/file_io.c:693
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Dosiero havas glueman bito, preterpasas"
#: src/xz/file_io.c:700
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Enmeta dosiero havas pli ol rektan ligilon, preterpasas"
#: src/xz/file_io.c:788
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Eraro dum restarigi la statajn flagojn al la ĉefenigujo: %s"
#: src/xz/file_io.c:836
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Eraro dum atingi la dosierstatajn flagojn el la ĉefenigujo: %s"
#: src/xz/file_io.c:1014
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Eraro dum restarigi la flagon O_APPEND al la ĉefenigujo: %s"
#: src/xz/file_io.c:1026
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Fermo de la dosiero malsukcesis: %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: Serĉado malsukcesis dum provi krei maldensan dosieron: %s"
#: src/xz/file_io.c:1157
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Legeraro: %s"
#: src/xz/file_io.c:1177
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Eraro dum serĉi la dosieron: %s"
#: src/xz/file_io.c:1187
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Neatendita dosierfino"
#: src/xz/file_io.c:1246
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Skriberaro: %s"
#: src/xz/hardware.c:107
msgid "Disabled"
msgstr "Malaktiva"
#. 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 "Totala kiomo da ĉefmemoro: "
#: src/xz/hardware.c:128
msgid "Memory usage limit for compression: "
msgstr "Memoruzada limo por kunpremo: "
#: src/xz/hardware.c:130
msgid "Memory usage limit for decompression: "
msgstr "Memoruzada limo por malkunpremo: "
#. 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 "Nenio"
#. 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 "Nekonata-2"
#: src/xz/list.c:73
msgid "Unknown-3"
msgstr "Nekonata-3"
#: src/xz/list.c:75
msgid "Unknown-5"
msgstr "Nekonata-5"
#: src/xz/list.c:76
msgid "Unknown-6"
msgstr "Nekonata-6"
#: src/xz/list.c:77
msgid "Unknown-7"
msgstr "Nekonata-7"
#: src/xz/list.c:78
msgid "Unknown-8"
msgstr "Nekonata-8"
#: src/xz/list.c:79
msgid "Unknown-9"
msgstr "Nekonata-9"
#: src/xz/list.c:81
msgid "Unknown-11"
msgstr "Nekonata-11"
#: src/xz/list.c:82
msgid "Unknown-12"
msgstr "Nekonata-12"
#: src/xz/list.c:83
msgid "Unknown-13"
msgstr "Nekonata-13"
#: src/xz/list.c:84
msgid "Unknown-14"
msgstr "Nekonata-14"
#: src/xz/list.c:85
msgid "Unknown-15"
msgstr "Nekonata-15"
#: src/xz/list.c:153
#, c-format
msgid "%s: File is empty"
msgstr "%s: Dosiero malplenas"
#: src/xz/list.c:158
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Tro malgranda por esti valida .xz-dosiero"
#. 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 "Fluoj Blokoj Kunpremita Nekunpremita Propor Kontrol Dosiernomo"
#: src/xz/list.c:717
#, c-format
msgid " Streams: %s\n"
msgstr " Fluoj: %s\n"
#: src/xz/list.c:719
#, c-format
msgid " Blocks: %s\n"
msgstr " Blokoj: %s\n"
#: src/xz/list.c:721
#, c-format
msgid " Compressed size: %s\n"
msgstr " Kunpremita grando: %s\n"
#: src/xz/list.c:724
#, c-format
msgid " Uncompressed size: %s\n"
msgstr " Nekunpremita grando: %s\n"
#: src/xz/list.c:727
#, c-format
msgid " Ratio: %s\n"
msgstr " Proporcio: %s\n"
#: src/xz/list.c:729
#, c-format
msgid " Check: %s\n"
msgstr " Kontrolo: %s\n"
#: src/xz/list.c:730
#, c-format
msgid " Stream padding: %s\n"
msgstr " Flua remburo: %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 ""
" Fluoj:\n"
" Fluo Blokoj KunpremDeŝovo MalkunpremDeŝovo KunpremaGrando MalkGrando Propor Kontrol Remburo"
#. 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 ""
" Blokoj:\n"
" Fluo Bloko KunpremDeŝovo MalkunpremDeŝovo TotalGrando MalkGrando Propor 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 " KontrolVal %*s Ĉapo Flagoj KunpremaGrando Memoruzo Filtriloj"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Memoro postulata: %s megabajtoj\n"
#: src/xz/list.c:905 src/xz/list.c:1080
#, c-format
msgid " Sizes in headers: %s\n"
msgstr " Grandoj en ĉapoj: %s\n"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "Yes"
msgstr "Jes"
#: 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 " Minimuma eldono de XZ Utils: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
#: src/xz/list.c:1057
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s dosiero\n"
msgstr[1] "%s dosieroj\n"
#: src/xz/list.c:1070
msgid "Totals:"
msgstr "Sumoj:"
#: src/xz/list.c:1071
#, c-format
msgid " Number of files: %s\n"
msgstr " Nombro da dosieroj: %s\n"
#: src/xz/list.c:1146
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list funkcias nur por .xz-dosierojn (--format=xz aŭ --format=auto)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input"
msgstr "--list ne regas legadon el la ĉefenigujo"
#: src/xz/main.c:89
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Eraro dum legi dosiernomojn: %s"
#: src/xz/main.c:96
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Neatendita fino de enigo dum legi dosiernomojn"
#: 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: Nula signo trovita dum legi dosiernomojn; eble vi celis uzi la parametron`--files0' anstataŭ `--files'"
#: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Kunpremo kaj malkunmpremo per --robot ankoraŭ ne estas regataj."
#: src/xz/main.c:252
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Ne eblas legi datumojn el la ĉefenigujo dum legi legi dosiernomojn el la ĉefenigujo"
#. 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 "Interna programeraro"
#: src/xz/message.c:784
msgid "Cannot establish signal handlers"
msgstr "Ne eblas establi signalajn traktilojn"
#: src/xz/message.c:793
msgid "No integrity check; not verifying file integrity"
msgstr "Neniu integra kontrolo; ne certigos dosieran integron"
#: src/xz/message.c:796
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Nekomprenata tipo de integra kontrolo; ne certigos dosieran integron"
#: src/xz/message.c:803
msgid "Memory usage limit reached"
msgstr "Memoruzada limo atingita"
#: src/xz/message.c:806
msgid "File format not recognized"
msgstr "Dosierformato ne rekonata"
#: src/xz/message.c:809
msgid "Unsupported options"
msgstr "Nekomprenataj elektoj"
#: src/xz/message.c:812
msgid "Compressed data is corrupt"
msgstr "Kunpremitaj datumoj estas koruptaj"
#: src/xz/message.c:815
msgid "Unexpected end of input"
msgstr "Neatendita fino de enigo"
#: src/xz/message.c:848
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s megabajtoj da memoro estas postulataj. La limigilo estas malaktiva."
#: src/xz/message.c:876
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s megabajtoj da memoro estas postulata. La limo estas %s."
#: src/xz/message.c:1043
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filtrila ĉeno: %s\n"
#: src/xz/message.c:1053
#, c-format
msgid "Try `%s --help' for more information."
msgstr "`%s --help' provindas por pliaj informaj."
#: src/xz/message.c:1079
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
"Uzado: %s [ELEKTO].. [DOSIERO]...\n"
"Kunpremi aŭ malkunpremi DOSIEROjN laŭ la .xz-formato.\n"
"\n"
#: src/xz/message.c:1086
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Devigitaj parametroj por longaj elektoj estas ankaŭ devigitaj por\n"
"mallongaj elektoj.\n"
#: src/xz/message.c:1090
msgid " Operation mode:\n"
msgstr " Operacia reĝimo:\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 eldevigi kunpremon\n"
" -d, --decompress eldevigi malkunpremon\n"
" -t, --test certigi la integron de kunpremitan dosieron\n"
" -l, --list listigi informojn pri .xz-dosierojn"
#: src/xz/message.c:1099
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Operacia modifiloj:\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 ne forigi enigajn dosierojn\n"
" -f, --force eldevigi anstataŭigi eligajn dosierojn kaj\n"
" (mal)kunpmremajn ligilojn \n"
" -c, --stdout skribi al la ĉefeligujo kaj ne forigi enigajn dosierojn"
#: 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"
" malkunpremi nur la unuan fluon kaj silente\n"
" ignori eventualajn ceterajn enigajn datumojn"
#: 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 krei maldensajn dosierojn dum malkunpremi\n"
" -S, --suffix=.SUF uzi la sufikson `.SUF' ĉe kunpremataj dosieroj\n"
" --files[=DOSIERO]\n"
" legi dosiernomojn traktotajn de DOSIERO; se DOSIERO estas\n"
" forlasita, dosieroj estas legotaj el la ĉefenigujo;\n"
" dosiernomojn devas finigi novlinio signo\n"
" --files0[=DOSIERO]\n"
" kiel --files sed uzi la nulan signon por finigi"
#: src/xz/message.c:1120
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Bazaj dosierformataj kaj kunpremaj elektoj:\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 dosierformato kodota aŭ malkodato; validaj valoroj estas\n"
" `auto' (apriora), `xz', `lzma' kaj `raw'\n"
" -C, --check=KONT tipo de integra kontrolo: `none' (estu atentema),\n"
" `crc32', `crc64' (apriora) aŭ `sha256'"
#: src/xz/message.c:1127
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check ne certigi la integran kontrolon dum malkunpremo"
#: 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 kunpremnivelo; apriore 6; pripensu memoruzadon antaŭ ol\n"
" uzi la nivelojn 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 provi plibonigi kunpreman proporcion per uzado de\n"
" ĉefprocesoran tempon; ne influas la memorajn postulojn\n"
" de malkunpremo"
#: 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=NOMBRO\n"
" uzi maksimume NOMBRO fadenoj; apriore 1; 0 por\n"
" uzi fadenojn samnombrajn kiel procesoraj kernoj"
#: 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=GRANDO\n"
" komenci novan .xz-blokon post ĉiu GRANDO bajtoj da enigo;\n"
" uzi por agordi la blokan grandon por kunfadena kunpremo"
#: 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=GRANDOJ\n"
" komenci novan .xz-blokon post la donitajn intertempojn de\n"
" nekunpremitaj datumoj, apartigataj de komoj"
#: 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=TEMPOLIMO\n"
" dum kunpremo se pli ol TEMPOLIMO milisekundoj\n"
" okazis post la antaŭan elbufrigo kaj legi pliajn enigojn\n"
" paŭzigus, ĉiuj atendataj datumoj estas elbufrigataj"
#: 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=LIMO\n"
" --memlimit-decompress=LIMO\n"
" -M, --memlimit=LIMO\n"
" agordi memoruzadon por kunpremo, malkunpremo,\n"
" aŭ ambaŭ; LIMO estas laŭ bajtoj, % da ĉefmemoroj, aŭ 0\n"
" por aprioraĵoj"
#: 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 kunprema agordo superas la memoruzadan limon\n"
" montri eraron anstataŭ malgrandigi la agordaĵon"
#: src/xz/message.c:1171
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Propra filtrila ĉeno por kunpremo (alternativaj por uzi antaŭagordaĵon):"
#: 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[=ELEKTOJ] LZMA1 aŭ LZMA2; OPTS estas listo de nul aŭ pliaj\n"
" --lzma2[=ELEKTOJ] de la jenaj elektoj (validaj valoroj; apriora),\n"
" apartigataj de komoj:\n"
" preset=ANT restarigi agordon al antaŭagordaĵon (0-9[e])\n"
" dict=NOM vortara grando (4 kilobajtoj - 1536\n"
" megabajtoj; 8 megabajtoj)\n"
" lc=NOM nombro da laŭvortaj kuntekstaj bitoj\n"
" (0-4; 3)\n"
" lp=NOM nombro da laŭvortaj poziciaj bitoj (0-4; 0)\n"
" pb=NOM nombro da poziciaj bitoj (0-4; 2)\n"
" mode=REĜI kunprema reĝimo (fast, normal; normal)\n"
" nice=NOM bona longo de kongruaĵo (2-273; 64)\n"
" mf=NOMO kongruaĵa trovilo (hc3, hc4, bt2, bt3, bt4;\n"
" bt4)\n"
" depth=NUM maksimuma profundo de serĉo; 0=aŭtomata\n"
" (apriore)"
#: 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[=ELEKTOJ] x86-BCJ-filtrilo (32-bita and 64-bita)\n"
" --powerpc[=ELEKTOJ] PowerPC-BCJ-filtrilo (nur pezkomenca)\n"
" --ia64[=ELEKTOJ] IA-64 (Itanium)-BCJ-filtrilo\n"
" --arm[=ELEKTOJ] ARM-BCJ-filtrilo (nur pezfina)\n"
" --armthumb[=ELEKTOJ]\n"
" ARM-Thumb-BCJ-filtrilo (pezfina)\n"
" --sparc[=ELEKTOJ] SPARC-BCJ filtrilo\n"
" Validaj ELEKTOJ por ĉiuj BCJ-filters:\n"
" start=NOMBRO komenca deŝovo por konvertoj (apriore 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[=ELEKTOJ] Delta filtriloj; validaj valoroj:\n"
" dist=NOMBRO distanco inter bajtoj subtrahataj de unu\n"
" la alia (1-256; 1)"
#: src/xz/message.c:1215
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Aliaj elektoj:\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 silentigi avertojn; uzu dufoje por ankaŭ silentigi erarojn\n"
" -v, --verbose eligi superfluajn informojn; uzu dufoje por pliigi la\n"
" superfluecon"
#: src/xz/message.c:1223
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn avertoj ne influu la eliran staton"
#: src/xz/message.c:1225
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot uzi mesaĝojn facile analizeblaj per skriptoj"
#: 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 montri la totalan kiomon de la ĉefmemoro kaj la nune\n"
" aktivaj memoruzadaj limoj, kaj eliri"
#: 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 montri la mallongan helpon (listigas nur la bazajn\n"
" elektojn)\n"
" -H, --long-help montri la longan helpon kaj eliri"
#: 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 montri ĉi tiun mallongan helpon kaj eliri\n"
" -H, --long-help montri la longan helpon (listigas ankaŭ la altnivelajn\n"
" elektojn)"
#: src/xz/message.c:1240
msgid " -V, --version display the version number and exit"
msgstr " -V, --version montri la eldonan numeron kaj eliri"
#: src/xz/message.c:1242
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"Kun neniu DOSIERO aŭ kiam DOSIERO estas -, legi el la ĉefenigujo.\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 "Raporti cimojn al <%s> (en la angla aŭ la suoma).\n"
#: src/xz/message.c:1250
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s ĉefpaĝo: <%s>\n"
#: src/xz/message.c:1254
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ĈI TIU ESTAS DISVOLVA REDAKCIO, NE CELATA POR ĈIUTAGA UZADO."
#: src/xz/options.c:86
#, c-format
msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "%s: Elektoj devas esti paroj de `name=value`, apartigitaj de komoj"
#: src/xz/options.c:93
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nevalida elekto-nomo"
#: src/xz/options.c:113
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Nevalida elekto-valoro"
#: src/xz/options.c:247
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nevalida LZMA1/LZMA2 antaŭagordaĵo: %s"
#: src/xz/options.c:355
msgid "The sum of lc and lp must not exceed 4"
msgstr "La sumo de lc kaj lp devas ne superi 4"
#: src/xz/options.c:359
#, c-format
msgid "The selected match finder requires at least nice=%<PRIu32>"
msgstr "Estas postulata de la elektita kongruaĵa trovilo minimume nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Kun --format=raw, --suffix=.SUF estas postulata se ne legi al la ĉefeligujo"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Dosiernomo havas nekonatan sufikson, preterpasas"
#: src/xz/suffix.c:185
#, c-format
msgid "%s: File already has `%s' suffix, skipping"
msgstr "%s: Dosiero jam havas la sufikson `%s', preterpasas"
#: src/xz/suffix.c:393
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Nevalida dosiernoma sufikso"
#: src/xz/util.c:71
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Valoro ne estas nenegativa dekuma entjero"
#: src/xz/util.c:113
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Nevalida multiplika sufikso"
#: src/xz/util.c:115
msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
msgstr "Validaj sufiksoj estas `KiB' (2^10), `MiB' (2^20) kaj `GiB' (2^30)."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Valoro de la elekto `%s' devas esti inkluzive inter %<PRIu64> kaj %<PRIu64>"
#: src/xz/util.c:257
msgid "Empty filename, skipping"
msgstr "Malplena dosiero, preterpasas"
#: src/xz/util.c:271
msgid "Compressed data cannot be read from a terminal"
msgstr "Kunpremitaj datumoj ne povas esti ligataj de terminalo"
#: src/xz/util.c:284
msgid "Compressed data cannot be written to a terminal"
msgstr "Kunpmremitaj datumoj ne povas esti skribataj al terminalo"
#: src/common/tuklib_exit.c:39
msgid "Writing to standard output failed"
msgstr "Skribi al la ĉefeligujo malsukcesis"
#: src/common/tuklib_exit.c:42
msgid "Unknown error"
msgstr "Nekonata eraro"

984
po/es.po Normal file
View File

@ -0,0 +1,984 @@
# Spanish translation for xz-5.2.4
# This file is put in the public domain.
# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2022.
#
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: 2022-06-22 23:40+0800\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\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"
#: 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: Demasiados argumentos para --block-list"
#: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list"
msgstr "0 solo se puede usar como el último elemento en --block-list"
#: src/xz/args.c:406
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Tipo de formato de fichero desconocido"
#: src/xz/args.c:429 src/xz/args.c:437
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: No se admite el tipo de verificación de integridad"
#: src/xz/args.c:473
msgid "Only one file can be specified with `--files' or `--files0'."
msgstr "Solo se puede especificar un fichero con `--files' o `--files0'."
#: src/xz/args.c:541
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La variable de ambiente %s contiene demasiados argumentos"
#: src/xz/args.c:643
msgid "Compression support was disabled at build time"
msgstr "Se desactivó el soporte para compresión en el momento de compilación"
#: src/xz/args.c:650
msgid "Decompression support was disabled at build time"
msgstr "Se desactivo el soporte para descompresión en el momento de compilación"
#: src/xz/coder.c:110
msgid "Maximum number of filters is four"
msgstr "El número máximo de filtros es cuatro"
#: src/xz/coder.c:129
msgid "Memory usage limit is too low for the given filter setup."
msgstr "El límite de uso de memoria es muy bajo para la configuración de filtro dada."
#: src/xz/coder.c:159
msgid "Using a preset in raw mode is discouraged."
msgstr "No se recomienda un modo predeterminado en modo crudo."
#: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions."
msgstr "El número exacto de las opciones predeterminadas puede variar entre versiones del software."
#: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "El formato .lzma solamente admite el filtro LZMA1"
#: src/xz/coder.c:192
msgid "LZMA1 cannot be used with the .xz format"
msgstr "No se puede usar LZMA1 con el formato .xz"
#: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout"
msgstr "La cadena de filtros es incompatible con --flush-timeout"
#: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Se cambia al modo de un solo hilo debido a --flush-timeout"
#: src/xz/coder.c:235
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Se usan hasta %<PRIu32> hilos."
#: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options"
msgstr "No se admite las opciones de cadena de filtros o de filtro"
#: src/xz/coder.c:263
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "La descompresión necesitará %s MiB de memoria."
#: 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 "Se ajusta el número de hilos de %s a %s para no exceder el límite de uso de memoria 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 "Se ajusta el tamaño del diccionario LZMA%c de %s MiB a %s MiB para no exceder el límite de uso de memoria de %s MiB"
#: src/xz/file_io.c:110 src/xz/file_io.c:118
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Error al crear una tubería: %s"
#: src/xz/file_io.c:224
msgid "Failed to enable the sandbox"
msgstr "Falló al activar el arenero"
#: src/xz/file_io.c:266
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: falló 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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Al parecer se movió el fichero, no se borra"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: No se puede borrar: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: No se puede establecer el propietario del fichero: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: No se puede establecer el grupo del fichero: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: No se pueden establecer los permisos del fichero: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Error al obtener la opciones de estado de fichero de la entrada estándar: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Es un enlace simbólico, se salta"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Es un directorio, se salta"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: No es un fichero regular, se salta"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: El fichero tiene el bit setuid o setgid activo, se salta"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: El fichero tiene el bit sticky activo, se salta"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: El fichero de entrada tiene más de un enlace duro, se salta"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Error al restaurar las opciones de estado en la entrada estándar: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Error al obtener las opciones de estado de fichero de la entrada estándar: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Error al restaurar la opción O_APPEND a la salida estándar: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Falló al cerrar el fichero: %s"
#: 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: Falló la búsqueda al tratar de crear un fichero disperso: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Error de lectura: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Error al buscar en el fichero: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Fin de fichero inesperado"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Error de escritura: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Desactivado"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Cantidad total de memoria física (RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Límite de uso de memoria para compresión: "
#: src/xz/hardware.c:160
msgid "Memory usage limit for decompression: "
msgstr "Límite de uso de memoria para descompresión: "
#. 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 "Ninguno"
#. 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 "Descon-2"
#: src/xz/list.c:73
msgid "Unknown-3"
msgstr "Descon-3"
#: src/xz/list.c:75
msgid "Unknown-5"
msgstr "Descon-5"
#: src/xz/list.c:76
msgid "Unknown-6"
msgstr "Descon-6"
#: src/xz/list.c:77
msgid "Unknown-7"
msgstr "Descon-7"
#: src/xz/list.c:78
msgid "Unknown-8"
msgstr "Descon-8"
#: src/xz/list.c:79
msgid "Unknown-9"
msgstr "Descon-9"
#: src/xz/list.c:81
msgid "Unknown-11"
msgstr "Descon-11"
#: src/xz/list.c:82
msgid "Unknown-12"
msgstr "Descon-12"
#: src/xz/list.c:83
msgid "Unknown-13"
msgstr "Descon-13"
#: src/xz/list.c:84
msgid "Unknown-14"
msgstr "Descon-14"
#: src/xz/list.c:85
msgid "Unknown-15"
msgstr "Descon-15"
#: src/xz/list.c:153
#, c-format
msgid "%s: File is empty"
msgstr "%s: El fichero está vacío"
#: src/xz/list.c:158
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Demasiado pequeño para ser un fichero .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 "Flujos Bloques Comprimido Sin-Comprimir Relac Verif Nombre-Fichero"
#: src/xz/list.c:717
#, c-format
msgid " Streams: %s\n"
msgstr " Flujos: %s\n"
#: src/xz/list.c:719
#, c-format
msgid " Blocks: %s\n"
msgstr " Bloques: %s\n"
#: src/xz/list.c:721
#, c-format
msgid " Compressed size: %s\n"
msgstr " Tamaño comprimido: %s\n"
#: src/xz/list.c:724
#, c-format
msgid " Uncompressed size: %s\n"
msgstr " Tamaño sin comprimir: %s\n"
#: src/xz/list.c:727
#, c-format
msgid " Ratio: %s\n"
msgstr " Relación: %s\n"
#: src/xz/list.c:729
#, c-format
msgid " Check: %s\n"
msgstr " Verificación: %s\n"
#: src/xz/list.c:730
#, c-format
msgid " Stream padding: %s\n"
msgstr " Relleno de flujo: %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 ""
" Flujos:\n"
" Flujo Bloques DesplComp DesplUncomp TamComp TamDescomp Razon Verif Relleno"
#. 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 ""
" Bloques:\n"
" Flujo Bloque DesplComp DesplUncomp TamTotal TamDescomp Razon 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 " VerifVal %*s Cabece Opciones TamComp UsoMem Filtros"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Memoria requerida: %s MiB\n"
#: src/xz/list.c:905 src/xz/list.c:1080
#, c-format
msgid " Sizes in headers: %s\n"
msgstr " Tamaños en cabeceras: %s\n"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "Yes"
msgstr "Sí"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "No"
msgstr "No"
#: src/xz/list.c:907 src/xz/list.c:1082
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versión de herramientas XZ mínima: %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 fichero\n"
msgstr[1] "%s ficheros\n"
#: src/xz/list.c:1070
msgid "Totals:"
msgstr "Totales:"
#: src/xz/list.c:1071
#, c-format
msgid " Number of files: %s\n"
msgstr " Número de ficheros: %s\n"
#: src/xz/list.c:1146
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list solo funciona con ficheros .xz (--format=xz o --format=auto)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input"
msgstr "--list no admite leer de la entrada estándar"
#: src/xz/main.c:89
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Error al leer nombres de fichero: %s"
#: src/xz/main.c:96
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Fin de entrada inesperada al leer nombres de fichero"
#: 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: Se encontraron caracteres nulos al leer nombres de ficheros. ¿Tal vez quería usar `--files0' en lugar de `--files'?"
#: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Aún no se admite la compresión y descompresión con --robot."
#: src/xz/main.c:252
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "No se pueden leer datos de la entrada estándar cuando se leen nombres de fichero de la entrada estándar"
#. 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 "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "Error interno (bug)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "No se pueden establecer los manejadores de señales"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "No hay revisión de integridad; no se verifica la integridad del fichero"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "No se admite el tipo de revisión de integridad; no se verifica la integridad del fichero"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Se alcanzó el límite de uso de memoria"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "No se reconoce el formato del fichero"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Opciones sin soporte"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Los datos comprimidos están corruptos"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Fin de entrada inesperado"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Se requieren %s MiB de memoria. Se desactiva el limitador."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Se requieren %s MiB de memoria. El límite es %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Cadena de filtro: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Intente `%s --help' para obtener más información."
#: src/xz/message.c:1093
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
"Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n"
"Comprime o descomprime FICHEROs en el formato .xz.\n"
"\n"
#: src/xz/message.c:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Los argumentos obligatorios para las opciones largar también son\n"
"obligatorios para las opciones cortas.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " Modo de operación:\n"
#: src/xz/message.c:1107
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 fuerza la compresión\n"
" -d, --decompress fuerza la descompresión\n"
" -t, --test prueba la integridad del fichero comprimido\n"
" -l, --list lista la información sobre los ficheros .xz"
#: src/xz/message.c:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Modificadores de operación:\n"
#: 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 conserva (no borra) los ficheros de entrada\n"
" -f, --force fuerza la sobreescritura del fichero de salida y\n"
" (des)comprime enlaces\n"
" -c, --stdout escribe a la entrada estándar y no borra los ficheros\n"
" de entrada"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream solo descomprime el primer flujo, y descarta\n"
" silenciosamente los posibles datos de entrada restantes"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse no crea archivos dispersos durante la descompresión\n"
" -S, --suffix=.SUF usa el sufijo `.SUF' en los ficheros comprimidos\n"
" --files[=FICH] lee los nombres de ficheros a procesar de FICHero;\n"
" si se omite el FICHero, los nombres de fichero se leen\n"
" de la entrada estándar; los nombres de fichero deben\n"
" terminar con el carácter de línea nueva\n"
" --files0[=FICH] como --files pero usa el carácter nulo como terminador"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Opciones básicas de compresión y formato de fichero:\n"
#: 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"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'"
msgstr ""
" -F, --format=FMT formato de fichero para codificar o decodificar; los\n"
" valores posibles son\n"
" `auto' (por defecto), `xz', `lzma', y `raw'\n"
" -C, --check=VERIF tipo de verificación de integridad:\n"
" `none' (usar con precaución),\n"
" `crc32', `crc64' (por defecto), o `sha256'"
#: src/xz/message.c:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check no hace la verificación de integridad al descomprimir"
#: 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!"
msgstr ""
" -0 ... -9 valor predefinido de compresión; por defecto es 6.\n"
" ¡Considere el uso de memoria del compresor *y*\n"
" del descompresor antes de usar 7-9!"
#: src/xz/message.c:1149
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
" -e, --extreme trata de mejorar la razón de compresión usando más\n"
" tiempo de procesamiento; no afecta los requisitos\n"
" de memoria del descompresor"
#: 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 ""
" -T, --threads=NÚM usa como máximo NÚM hilos; por defecto es 1;\n"
" establezca a 0 para usar tantos hilos como hayan\n"
" núcleos de procesador"
#: 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 ""
" --block-size=TAMAÑO\n"
" inicia un nuevo bloque .xz después de cada TAMAÑO bytes\n"
" de entrada; use esta opción para establecer el tamaño\n"
" de bloque para la compresión con hilos"
#: 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 ""
" --block-list=TAMAÑOS\n"
" inicia un nuevo bloque .xz después de cada intervalo\n"
" dado, separado por comas, de datos sin comprimir"
#: 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 ""
" --flush-timeout=TIEMPO\n"
" al comprimir, si pasaron más de TIEMPO milisegundos\n"
" desde el últim descarte y la lectura de más entrada\n"
" produciría un bloqueo, todos los datos pendientes son\n"
" descartados"
#: 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"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr ""
" --memlimit-compress=LÍMITE\n"
" --memlimit-decompress=LÍMITE\n"
" -M, --memlimit=LÍMITE\n"
" define el límite de uso de memoria para compresión,\n"
" descompresión o ambos; el LÍMITE está en bytes, % de RAM\n"
" 0 para valores por defecto"
#: 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"
msgstr ""
" --no-adjust si la configuración de compresión excede el límite de\n"
" uso de memoria, muestra un error en lugar de ajustar\n"
" los valores hacia abajo"
#: src/xz/message.c:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Cadena de filtros para compresión (alternativa a valores predefinidos):"
#: 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"
" 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[=OPCIONES] LZMA1 o LZMA2; OPCIONES es una lista separada por comas\n"
" --lzma2[=OPCIONES] de cero o más opciones (valores válidos; por defecto)\n"
" preset=PRE inicia opciones con un valor predefinido\n"
" (0-9[e])\n"
" dict=NÚM tamaño de diccionario (4KiB - 1536MiB; 8MiB)\n"
" lc=NÚM número de bits de contexto literal (0-4; 3)\n"
" lp=NÚM número de bits de posición literal (0-4; 0)\n"
" pb=NÚM número de bits de posición (0-4; 2)\n"
" mode=MODO modo de compresión (fast, normal; normal)\n"
" nice=NÚM longitud para una coincidencia (2-273; 64)\n"
" mf=NOMBRE buscador de coincidencias\n"
" (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=NÚM profundidad máxima de búsqueda;\n"
" 0=automática (por defecto)"
#: src/xz/message.c:1209
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[=OPCIONES] filtro BCJ para x86 BCJ (32-bit y 64-bit)\n"
" --powerpc[=OPCIONES] filtro BCJ para PowerPC BCJ (solo big endian)\n"
" --ia64[=OPCIONES] filtro BCJ para IA-64 (Itanium)\n"
" --arm[=OPCIONES] filtro BCJ para ARM (solo little endian)\n"
" --armthumb[=OPCIONES] filtro BCJ para ARM-Thumb (solo little endian)\n"
" --sparc[=OPCIONES] filtro BCJ para SPARC\n"
" OPCIONES válidas para todos los filtros BCJ:\n"
" start=NÚM inicio de desplazamiento para\n"
" conversiones (por defecto=0)"
#: src/xz/message.c:1221
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[=OPCIONES] Filtro delta; OPCIONES (valores válidos; por defecto):\n"
" dist=NÚM distancia entre bytes que se restan\n"
" uno del otro (1-256; 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Otras opciones:\n"
#: src/xz/message.c:1232
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 dos veces para suprimir errores\n"
" -v, --verbose detallado; use dos veces para obtener aún más detalle"
#: src/xz/message.c:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn los avisos no afectan el estado de la salida"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot usa mensajes analizables por máquina (útil para scripts)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory muestra la cantidad total de RAM y los límites de uso\n"
" de memoria activos, y termina"
#: 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 muestra la ayuda corta (solo muestra las opciones básicas)\n"
" -H, --long-help muestra esta ayuda detallada y termina"
#: 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 muestra esta ayuda corta y termina\n"
" -H, --long-help muestra la ayuda larga (además muestra opciones avanzadas)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version muestra el número de versión y termina"
#: src/xz/message.c:1256
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"Sin FICHEROs, o cuando el FICHERO es -, lee la entrada estándar.\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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Reporte errores a <%s> (en inglés o finlandés).\n"
"Reporte errores de traducción al español a <es@tp.org.es>.\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Sitio web de %s: <%s>\n"
#: src/xz/message.c:1268
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ESTA ES UNA VERSIÓN EN DESARROLLO Y NO ESTÁ LISTA PARA USO EN PRODUCCIÓN."
#: src/xz/options.c:86
#, c-format
msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "%s: Las opciones deben ser pares `nombre=valor' separadas por comas"
#: src/xz/options.c:93
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nombre de opción inválido"
#: src/xz/options.c:113
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Valor de opción inválido"
#: src/xz/options.c:247
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "No se admite el valor predefinido LZMA1/LZMA2: %s"
#: src/xz/options.c:355
msgid "The sum of lc and lp must not exceed 4"
msgstr "La suma de lc y lp no debe exceder 4"
#: src/xz/options.c:359
#, c-format
msgid "The selected match finder requires at least nice=%<PRIu32>"
msgstr "El buscador de coincidencias seleccionado requiere por lo menos nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Con --format=raw, se requiere --suffix=.SUF a menos que se escriba a la salida estándar"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: El nombre de fichero tiene un sufijo desconocido, se salta"
#: src/xz/suffix.c:185
#, c-format
msgid "%s: File already has `%s' suffix, skipping"
msgstr "%s: El fichero ya tiene un sufijo `%s', se salta"
#: src/xz/suffix.c:393
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Sufijo de nombre de fichero inválido"
#: src/xz/util.c:71
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: El valor no es un entero decimal no-negativo"
#: src/xz/util.c:113
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Sufijo multiplicador inválido"
#: src/xz/util.c:115
msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
msgstr "Los sufijos válidos son `KiB' (2^10), `MiB' (2^20), y `GiB' (2^30)."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "El valor de la opción `%s' debe estar en el rango [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Nombre de fichero vacío, se salta"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "No se pueden leer datos comprimidos de una terminal"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "No se pueden escribir datos comprimidos a una terminal"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "Falló la escritura a la salida estándar"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Error desconocido"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Se desactiva el arenero debido a argumentos incompatibles en la línea de órdenes"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Se activó el arenero con éxito"

974
po/fi.po Normal file
View File

@ -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 <lanurmi@iki.fi>, 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 <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.4\n"
#: 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 %<PRIu32> threads."
msgstr "Käytetään enintään %<PRIu32> 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 79!"
#: 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 (2273; 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 (1256; 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=%<PRIu32>"
msgstr "Valittu täsmäävyydenetsin vaatii vähintään nice-arvon=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: --format=raw vaatii, että --suffix=.PÄÄTE on annettu, ellei kirjoiteta vakiotulosteeseen"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Tiedostonimen pääte on tuntematon, ohitetaan"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "Valitsimen ”%s” arvon on oltava välillä [%<PRIu64>, %<PRIu64>]"
#: 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"

272
po/fr.po
View File

@ -1,16 +1,18 @@
# XZ Utils French Translation # XZ Utils French Translation
# This file is put in the public domain. # This file is put in the public domain.
# Adrien Nader <adrien@notk.org>, 2011-2014. # Adrien Nader <adrien@notk.org>, 2011-2014.
# Stéphane Aulery <lkppo@free.fr>, 2019.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: xz-utils\n" "Project-Id-Version: xz-5.2.4\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2014-11-25 20:23+0100\n" "POT-Creation-Date: 2018-04-29 18:19+0300\n"
"PO-Revision-Date: 2010-09-24 21;12+0200\n" "PO-Revision-Date: 2019-05-12 05:46+0200\n"
"Last-Translator: Adrien Nader <adrien@notk.org>\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
"Language-Team: None\n" "Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n" "Language: fr\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -19,16 +21,16 @@ msgstr ""
#: src/xz/args.c:63 #: src/xz/args.c:63
#, c-format #, c-format
msgid "%s: Invalid argument to --block-list" msgid "%s: Invalid argument to --block-list"
msgstr "" msgstr "%s : argument de l'option --block-list invalide"
#: src/xz/args.c:73 #: src/xz/args.c:73
#, c-format #, c-format
msgid "%s: Too many arguments to --block-list" msgid "%s: Too many arguments to --block-list"
msgstr "" msgstr "%s : trop d'arguments pour l'option --block-list"
#: src/xz/args.c:102 #: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list" 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 #: src/xz/args.c:406
#, c-format #, 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" msgid "The environment variable %s contains too many arguments"
msgstr "La variable d'environnement %s contient trop d'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 #: src/xz/coder.c:110
msgid "Maximum number of filters is four" msgid "Maximum number of filters is four"
msgstr "Le nombre maximal de filtres est quatre" 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 #: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout" 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 #: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout" 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 #, c-format
msgid "Using up to %<PRIu32> threads." msgid "Using up to %<PRIu32> threads."
msgstr "Jusqu'à %<PRIu32> threads seront utilisés." msgstr "Jusqu'à %<PRIu32> threads seront utilisés."
#: src/xz/coder.c:247 #: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options" msgid "Unsupported filter chain or filter options"
msgstr "Enchaînement ou options de filtres non pris en charge" msgstr "Enchaînement ou options de filtres non pris en charge"
#: src/xz/coder.c:255 #: src/xz/coder.c:263
#, c-format #, c-format
msgid "Decompression will need %s MiB of memory." msgid "Decompression will need %s MiB of memory."
msgstr "La décompression nécessitera %s MiB de mémoire." msgstr "La décompression nécessitera %s MiB de mémoire."
#: src/xz/coder.c:290 #: src/xz/coder.c:300
#, c-format #, c-format
msgid "Adjusted the number of threads from %s to %s 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 "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %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 #, 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 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" 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 #, c-format
msgid "Error creating a pipe: %s" msgid "Error creating a pipe: %s"
msgstr "Impossible de créer un tube anonyme (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 #, c-format
msgid "%s: poll() failed: %s" msgid "%s: poll() failed: %s"
msgstr "%s : L'appel à la fonction poll() a échoué : %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 #. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously #. of the original file, and in that case it obviously
#. shouldn't be removed. #. shouldn't be removed.
#: src/xz/file_io.c:236 #: src/xz/file_io.c:332
#, c-format #, c-format
msgid "%s: File seems to have been moved, not removing" msgid "%s: File seems to have been moved, not removing"
msgstr "%s : Le fichier a apparemment été déplacé, suppression annulée" 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 #, c-format
msgid "%s: Cannot remove: %s" msgid "%s: Cannot remove: %s"
msgstr "%s : Impossible de supprimer : %s" msgstr "%s : Impossible de supprimer : %s"
#: src/xz/file_io.c:268 #: src/xz/file_io.c:364
#, c-format #, c-format
msgid "%s: Cannot set the file owner: %s" msgid "%s: Cannot set the file owner: %s"
msgstr "%s : Impossible de modifier le propriétaire du fichier : %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 #, c-format
msgid "%s: Cannot set the file group: %s" msgid "%s: Cannot set the file group: %s"
msgstr "%s : Impossible de modifier le groupe propriétaire du fichier : %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 #, c-format
msgid "%s: Cannot set the file permissions: %s" msgid "%s: Cannot set the file permissions: %s"
msgstr "%s : Impossible de modifier les permissions du fichier : %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 # - 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 # 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. # 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 #, c-format
msgid "Error getting the file status flags from standard input: %s" 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 #: src/xz/file_io.c:572 src/xz/file_io.c:634
#, 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
#, c-format #, c-format
msgid "%s: Is a symbolic link, skipping" msgid "%s: Is a symbolic link, skipping"
msgstr "%s est un lien symbolique : ignoré" msgstr "%s est un lien symbolique : ignoré"
#: src/xz/file_io.c:551 #: src/xz/file_io.c:663
#, c-format #, c-format
msgid "%s: Is a directory, skipping" msgid "%s: Is a directory, skipping"
msgstr "%s est un répertoire : ignoré" msgstr "%s est un répertoire : ignoré"
#: src/xz/file_io.c:557 #: src/xz/file_io.c:669
#, c-format #, c-format
msgid "%s: Not a regular file, skipping" msgid "%s: Not a regular file, skipping"
msgstr "%s n'est pas un fichier régulier : ignoré" msgstr "%s n'est pas un fichier régulier : ignoré"
#: src/xz/file_io.c:574 #: src/xz/file_io.c:686
#, c-format #, c-format
msgid "%s: File has setuid or setgid bit set, skipping" msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s : Le fichier possède les bits `setuid' ou `setgid' : ignoré" 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 #, c-format
msgid "%s: File has sticky bit set, skipping" msgid "%s: File has sticky bit set, skipping"
msgstr "%s : Le fichier possède le bit `sticky' : ignoré" msgstr "%s : Le fichier possède le bit `sticky' : ignoré"
#: src/xz/file_io.c:588 #: src/xz/file_io.c:700
#, c-format #, c-format
msgid "%s: Input file has more than one hard link, skipping" 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é" msgstr "%s : Le fichier d'entrée a plus d'un lien matériel : ignoré"
# See note from translator above titled "file status flags". # See note from translator above titled "file status flags".
#: src/xz/file_io.c:668 #: src/xz/file_io.c:788
#, c-format #, c-format
msgid "Error restoring the status flags to standard input: %s" 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". # See note from translator above titled "file status flags".
#: src/xz/file_io.c:714 #: src/xz/file_io.c:836
#, c-format #, c-format
msgid "Error getting the file status flags from standard output: %s" msgid "Error getting the file status flags from standard output: %s"
msgstr "" msgstr "Erreur de lecture du drapeau d'état du fichier depuis la sortie standard : %s"
#: src/xz/file_io.c:723 #: src/xz/file_io.c:1014
#, c-format
msgid "Error setting O_NONBLOCK on standard output: %s"
msgstr "Impossible d'activer le drapeau O_NONBLOCK sur la sortie standard : %s"
#: src/xz/file_io.c:896
#, c-format #, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s" 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" 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 #, c-format
msgid "%s: Closing the file failed: %s" msgid "%s: Closing the file failed: %s"
msgstr "%s : Impossible de fermer le fichier : %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 #, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s" 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" 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 #, c-format
msgid "%s: Read error: %s" msgid "%s: Read error: %s"
msgstr "%s : Erreur d'écriture : %s" msgstr "%s : Erreur d'écriture : %s"
#: src/xz/file_io.c:1059 #: src/xz/file_io.c:1177
#, c-format #, c-format
msgid "%s: Error seeking the file: %s" msgid "%s: Error seeking the file: %s"
msgstr "%s : Impossible de se déplacer dans le fichier : %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 #, c-format
msgid "%s: Unexpected end of file" msgid "%s: Unexpected end of file"
msgstr "%s : Fin de fichier inattendue" msgstr "%s : Fin de fichier inattendue"
#: src/xz/file_io.c:1128 #: src/xz/file_io.c:1246
#, c-format #, c-format
msgid "%s: Write error: %s" msgid "%s: Write error: %s"
msgstr "%s : Erreur d'écriture : %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 #. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to #. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz". #. 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" msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Flux Blocs Compressé Décompressé Ratio Vérif. Nom de fichier" msgstr "Flux Blocs Compressé Décompressé Ratio Vérif. Nom de fichier"
#: src/xz/list.c:711 #: src/xz/list.c:717
#, c-format #, c-format
msgid " Streams: %s\n" msgid " Streams: %s\n"
msgstr " Flux : %s\n" msgstr " Flux : %s\n"
#: src/xz/list.c:713 #: src/xz/list.c:719
#, c-format #, c-format
msgid " Blocks: %s\n" msgid " Blocks: %s\n"
msgstr " Blocs : %s\n" msgstr " Blocs : %s\n"
#: src/xz/list.c:715 #: src/xz/list.c:721
#, c-format #, c-format
msgid " Compressed size: %s\n" msgid " Compressed size: %s\n"
msgstr " Taille données avec compression : %s\n" msgstr " Taille données avec compression : %s\n"
#: src/xz/list.c:718 #: src/xz/list.c:724
#, c-format #, c-format
msgid " Uncompressed size: %s\n" msgid " Uncompressed size: %s\n"
msgstr " Taille données sans compression : %s\n" msgstr " Taille données sans compression : %s\n"
#: src/xz/list.c:721 #: src/xz/list.c:727
#, c-format #, c-format
msgid " Ratio: %s\n" msgid " Ratio: %s\n"
msgstr " Ratio : %s\n" msgstr " Ratio : %s\n"
#: src/xz/list.c:723 #: src/xz/list.c:729
#, c-format #, c-format
msgid " Check: %s\n" msgid " Check: %s\n"
msgstr " Vérification : %s\n" msgstr " Vérification : %s\n"
#: src/xz/list.c:724 #: src/xz/list.c:730
#, c-format #, c-format
msgid " Stream padding: %s\n" msgid " Stream padding: %s\n"
msgstr " Octets de rembourrage du flux : %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 #. TRANSLATORS: The second line is column headings. All except
#. Check are right aligned; Check is left aligned. Test with #. Check are right aligned; Check is left aligned. Test with
#. "xz -lv foo.xz". #. "xz -lv foo.xz".
#: src/xz/list.c:752 #: src/xz/list.c:758
msgid "" msgid ""
" Streams:\n" " Streams:\n"
" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
@ -394,7 +406,7 @@ msgstr ""
#. TRANSLATORS: The second line is column headings. All #. TRANSLATORS: The second line is column headings. All
#. except Check are right aligned; Check is left aligned. #. except Check are right aligned; Check is left aligned.
#: src/xz/list.c:807 #: src/xz/list.c:813
#, c-format #, c-format
msgid "" msgid ""
" Blocks:\n" " Blocks:\n"
@ -410,57 +422,57 @@ msgstr ""
#. are right aligned. %*s is replaced with 0-120 #. are right aligned. %*s is replaced with 0-120
#. spaces to make the CheckVal column wide enough. #. spaces to make the CheckVal column wide enough.
#. Test with "xz -lvv foo.xz". #. Test with "xz -lvv foo.xz".
#: src/xz/list.c:819 #: src/xz/list.c:825
#, c-format #, c-format
msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
msgstr " ValVérif %*sEn-tête Drapeaux TailleComp UtilMém Filtres" 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 #, c-format
msgid " Memory needed: %s MiB\n" msgid " Memory needed: %s MiB\n"
msgstr " Mémoire nécessaire : %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 #, c-format
msgid " Sizes in headers: %s\n" msgid " Sizes in headers: %s\n"
msgstr " Tailles stockées dans l'en-tête : %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" msgid "Yes"
msgstr "Oui" msgstr "Oui"
#: src/xz/list.c:900 src/xz/list.c:1075 #: src/xz/list.c:906 src/xz/list.c:1081
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
#: src/xz/list.c:901 src/xz/list.c:1076 #: src/xz/list.c:907 src/xz/list.c:1082
#, c-format #, c-format
msgid " Minimum XZ Utils version: %s\n" msgid " Minimum XZ Utils version: %s\n"
msgstr " Version minimale de XZ Utils : %s\n" msgstr " Version minimale de XZ Utils : %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this #. 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". #. 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 #, c-format
msgid "%s file\n" msgid "%s file\n"
msgid_plural "%s files\n" msgid_plural "%s files\n"
msgstr[0] "%s fichier\n" msgstr[0] "%s fichier\n"
msgstr[1] "%s fichiers\n" msgstr[1] "%s fichiers\n"
#: src/xz/list.c:1064 #: src/xz/list.c:1070
msgid "Totals:" msgid "Totals:"
msgstr "Totaux :" msgstr "Totaux :"
#: src/xz/list.c:1065 #: src/xz/list.c:1071
#, c-format #, c-format
msgid " Number of files: %s\n" msgid " Number of files: %s\n"
msgstr " Nombre de fichiers : %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)" 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)" 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" msgid "--list does not support reading from standard input"
msgstr "--list est incompatible avec la lecture sur l'entrée standard" 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." msgid "Compression and decompression with --robot are not supported yet."
msgstr "La compression et la décompression ne marchent pas encore avec --robot." 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" 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" 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: ". #. of the line in messages. Usually it becomes "xz: ".
#. This is a translatable string because French needs #. This is a translatable string because French needs
#. a space before a colon. #. a space before a colon.
#: src/xz/message.c:713 #: src/xz/message.c:714
#, c-format #, c-format
msgid "%s: " msgid "%s: "
msgstr "%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)" msgid "Internal error (bug)"
msgstr "Erreur interne (bug)" msgstr "Erreur interne (bug)"
#: src/xz/message.c:783 #: src/xz/message.c:784
msgid "Cannot establish signal handlers" msgid "Cannot establish signal handlers"
msgstr "Impossible d'installer le gestionnaire de signaux" 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" msgid "No integrity check; not verifying file integrity"
msgstr "Pas de données de vérification d'intégrité ; vérification non effectuée" 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" 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" 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" msgid "Memory usage limit reached"
msgstr "Limite d'utilisation mémoire atteinte" msgstr "Limite d'utilisation mémoire atteinte"
#: src/xz/message.c:805 #: src/xz/message.c:806
msgid "File format not recognized" msgid "File format not recognized"
msgstr "Format de fichier inconnu" msgstr "Format de fichier inconnu"
#: src/xz/message.c:808 #: src/xz/message.c:809
msgid "Unsupported options" msgid "Unsupported options"
msgstr "Options non prises en charge" msgstr "Options non prises en charge"
#: src/xz/message.c:811 #: src/xz/message.c:812
msgid "Compressed data is corrupt" msgid "Compressed data is corrupt"
msgstr "Les données compressées sont corrompues" msgstr "Les données compressées sont corrompues"
#: src/xz/message.c:814 #: src/xz/message.c:815
msgid "Unexpected end of input" msgid "Unexpected end of input"
msgstr "Fin des données inattendue " msgstr "Fin des données inattendue "
#: src/xz/message.c:847 #: src/xz/message.c:848
#, c-format #, c-format
msgid "%s MiB of memory is required. The limiter is disabled." 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." 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 #, c-format
msgid "%s MiB of memory is required. The limit is %s." msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB de mémoire sont nécessaires, la limite étant %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 #, c-format
msgid "%s: Filter chain: %s\n" msgid "%s: Filter chain: %s\n"
msgstr "%s : Enchaînement de filtres : %s\n" msgstr "%s : Enchaînement de filtres : %s\n"
#: src/xz/message.c:1052 #: src/xz/message.c:1053
#, c-format #, c-format
msgid "Try `%s --help' for more information." msgid "Try `%s --help' for more information."
msgstr "Éxécutez `%s --help' pour obtenir davantage d'informations." msgstr "Éxécutez `%s --help' pour obtenir davantage d'informations."
#: src/xz/message.c:1078 #: src/xz/message.c:1079
#, c-format #, c-format
msgid "" msgid ""
"Usage: %s [OPTION]... [FILE]...\n" "Usage: %s [OPTION]... [FILE]...\n"
@ -563,17 +575,17 @@ msgstr ""
"Compresse ou decompresse FICHIER(s) au format .xz.\n" "Compresse ou decompresse FICHIER(s) au format .xz.\n"
"\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" msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "" msgstr ""
"Les arguments obligatoires pour les options longues le sont aussi pour les\n" "Les arguments obligatoires pour les options longues le sont aussi pour les\n"
"options courtes.\n" "options courtes.\n"
#: src/xz/message.c:1089 #: src/xz/message.c:1090
msgid " Operation mode:\n" msgid " Operation mode:\n"
msgstr " Mode d'opération :\n" msgstr " Mode d'opération :\n"
#: src/xz/message.c:1092 #: src/xz/message.c:1093
msgid "" msgid ""
" -z, --compress force compression\n" " -z, --compress force compression\n"
" -d, --decompress force decompression\n" " -d, --decompress force decompression\n"
@ -585,7 +597,7 @@ msgstr ""
" -t, --test tester l'intégrité du fichier compressé\n" " -t, --test tester l'intégrité du fichier compressé\n"
" -l, --list lister les informations sur les fichiers .xz" " -l, --list lister les informations sur les fichiers .xz"
#: src/xz/message.c:1098 #: src/xz/message.c:1099
msgid "" msgid ""
"\n" "\n"
" Operation modifiers:\n" " Operation modifiers:\n"
@ -593,7 +605,7 @@ msgstr ""
"\n" "\n"
" Modificateurs :\n" " Modificateurs :\n"
#: src/xz/message.c:1101 #: src/xz/message.c:1102
msgid "" msgid ""
" -k, --keep keep (don't delete) input files\n" " -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\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" " -c, --stdout écrire sur la sortie standard et ne pas supprimer les\n"
" fichiers d'entrée" " fichiers d'entrée"
#: src/xz/message.c:1107 #: src/xz/message.c:1108
msgid "" msgid ""
" --single-stream decompress only the first stream, and silently\n" " --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data" " ignore possible remaining input data"
@ -613,7 +625,7 @@ msgstr ""
" --single-stream décompresser uniquement le premier flux et ignorer\n" " --single-stream décompresser uniquement le premier flux et ignorer\n"
" silencieusement les données éventuellement restantes" " silencieusement les données éventuellement restantes"
#: src/xz/message.c:1110 #: src/xz/message.c:1111
msgid "" msgid ""
" --no-sparse do not create sparse files when decompressing\n" " --no-sparse do not create sparse files when decompressing\n"
" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\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" " 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" " --files0[=FILE] comme --files mais avec un caractère null comme séparateur"
#: src/xz/message.c:1119 #: src/xz/message.c:1120
msgid "" msgid ""
"\n" "\n"
" Basic file format and compression options:\n" " Basic file format and compression options:\n"
@ -637,7 +649,7 @@ msgstr ""
"\n" "\n"
" Options basiques de format de fichier et de compression :\n" " Options basiques de format de fichier et de compression :\n"
#: src/xz/message.c:1121 #: src/xz/message.c:1122
msgid "" msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n" " -F, --format=FMT file format to encode or decode; possible values are\n"
" `auto' (default), `xz', `lzma', and `raw'\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" " -C, --check=CHECK type de vérification d'intégrité : `none' (à utiliser avec\n"
" précaution), `crc32', `crc64' (par défaut) ou `sha256'" " 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" msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr "" msgstr ""
" --ignore-check ne pas vérifier l'intégrité des données lors de\n" " --ignore-check ne pas vérifier l'intégrité des données lors de\n"
" la décompression" " la décompression"
#: src/xz/message.c:1130 #: src/xz/message.c:1131
msgid "" msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n" " -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!" " 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" " l'utilisation mémoire du compresseur *et* du décompresseur\n"
" avant d'utiliser 7, 8 ou 9 !" " avant d'utiliser 7, 8 ou 9 !"
#: src/xz/message.c:1134 #: src/xz/message.c:1135
msgid "" 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" " does not affect decompressor memory requirements"
@ -673,7 +685,7 @@ msgstr ""
" de temps processeur ;\n" " de temps processeur ;\n"
" n'affecte pas les besoins mémoire du décompresseur" " n'affecte pas les besoins mémoire du décompresseur"
#: src/xz/message.c:1138 #: src/xz/message.c:1139
msgid "" msgid ""
" -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" " -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" " 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" " valeur 0 est spéciale et équivaut au nombre de processeurs\n"
" de la machine" " de la machine"
#: src/xz/message.c:1143 #: src/xz/message.c:1144
msgid "" msgid ""
" --block-size=SIZE\n" " --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"
@ -692,7 +704,7 @@ msgstr ""
" débuter un bloc XZ après chaque TAILLE octets de données\n" " 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" " d'entrée ; ce réglage sert pour la compression paralléle"
#: src/xz/message.c:1147 #: src/xz/message.c:1148
msgid "" msgid ""
" --block-list=SIZES\n" " --block-list=SIZES\n"
" start a new .xz block after the given comma-separated\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" " débuter des blocs XZ après les TAILLES octets de données\n"
" spécifiées avec des virgules pour séparateur" " spécifiées avec des virgules pour séparateur"
#: src/xz/message.c:1151 #: src/xz/message.c:1152
msgid "" msgid ""
" --flush-timeout=TIMEOUT\n" " --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n" " when compressing, if more than TIMEOUT milliseconds has\n"
" passed since the previous flush and reading more input\n" " passed since the previous flush and reading more input\n"
" would block, all pending data is flushed out" " would block, all pending data is flushed out"
msgstr "" 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 #, no-c-format
msgid "" msgid ""
" --memlimit-compress=LIMIT\n" " --memlimit-compress=LIMIT\n"
@ -726,7 +742,7 @@ msgstr ""
" décompression ou les deux ; LIMIT est en octets,\n" " décompression ou les deux ; LIMIT est en octets,\n"
" pourcentage de RAM, ou 0 pour la valeur par défaut" " pourcentage de RAM, ou 0 pour la valeur par défaut"
#: src/xz/message.c:1164 #: src/xz/message.c:1165
msgid "" msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n" " --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards" " 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" " d'utilisation mémoire, renvoyer une erreur plutôt que de\n"
" diminuer les réglages" " diminuer les réglages"
#: src/xz/message.c:1170 #: src/xz/message.c:1171
msgid "" msgid ""
"\n" "\n"
" Custom filter chain for compression (alternative for using presets):" " Custom filter chain for compression (alternative for using presets):"
@ -743,7 +759,7 @@ msgstr ""
"\n" "\n"
" Chaîne de filtres de compression personnalisée (en lieu des préréglages) :" " 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 "" msgid ""
"\n" "\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\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" " depth=NUM profondeur de recherche maximale ;\n"
" 0=automatique (par défaut)" " 0=automatique (par défaut)"
#: src/xz/message.c:1194 #: src/xz/message.c:1195
msgid "" msgid ""
"\n" "\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\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" " OPTS valides pour tous les filtres BCJ :\n"
" start=NUM position de début de la conversion (défaut=0)" " start=NUM position de début de la conversion (défaut=0)"
#: src/xz/message.c:1206 #: src/xz/message.c:1207
msgid "" msgid ""
"\n" "\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\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" " dist=NUM distance entre les octets soustraits les\n"
" uns aux autres (1-256 ; 1)" " uns aux autres (1-256 ; 1)"
#: src/xz/message.c:1214 #: src/xz/message.c:1215
msgid "" msgid ""
"\n" "\n"
" Other options:\n" " Other options:\n"
@ -814,7 +830,7 @@ msgstr ""
"\n" "\n"
" Autres options :\n" " Autres options :\n"
#: src/xz/message.c:1217 #: src/xz/message.c:1218
msgid "" 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" " -v, --verbose be verbose; specify twice for even more verbose"
@ -823,17 +839,17 @@ msgstr ""
" aussi masquer les erreurs\n" " aussi masquer les erreurs\n"
" -v, --verbose être bavard ; spécifier deux fois pour l'être davantage" " -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" msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn les avertissements ne modifient pas le code de sortie" 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)" msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr "" msgstr ""
" --robot utiliser des messages lisibles par un programme\n" " --robot utiliser des messages lisibles par un programme\n"
" (utile pour les scripts)" " (utile pour les scripts)"
#: src/xz/message.c:1227 #: src/xz/message.c:1228
msgid "" 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" " memory usage limits, and exit"
@ -841,7 +857,7 @@ msgstr ""
" --info-memory afficher la quantité totale de RAM ainsi que la limite\n" " --info-memory afficher la quantité totale de RAM ainsi que la limite\n"
" actuelle d'utilisation mémoire puis quitter" " actuelle d'utilisation mémoire puis quitter"
#: src/xz/message.c:1230 #: src/xz/message.c:1231
msgid "" msgid ""
" -h, --help display the short help (lists only the basic options)\n" " -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit" " -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, --help afficher l'aide courte (ne liste que les options de base)\n"
" -H, --long-help afficher l'aide longue (ceci) puis quitter" " -H, --long-help afficher l'aide longue (ceci) puis quitter"
#: src/xz/message.c:1234 #: src/xz/message.c:1235
msgid "" msgid ""
" -h, --help display this short help and exit\n" " -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)" " -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, --help afficher l'aide courte (ceci) puis quitter\n"
" -H, --long-help afficher l'aide longue (liste aussi les options avancées)" " -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" msgid " -V, --version display the version number and exit"
msgstr " -V, --version afficher le numéro de version puis quitter" msgstr " -V, --version afficher le numéro de version puis quitter"
#: src/xz/message.c:1241 #: src/xz/message.c:1242
msgid "" msgid ""
"\n" "\n"
"With no FILE, or when FILE is -, read standard input.\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 #. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW #. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks. #. address for translation bugs. Thanks.
#: src/xz/message.c:1247 #: src/xz/message.c:1248
#, c-format #, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n" msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "" msgstr ""
"Signaler les bogues à <%s> (en anglais ou en finlandais).\n" "Signaler les bogues à <%s> (en anglais ou en finnois).\n"
"Signaler les bogues de traduction à <adrien@notk.org>.\n" "Signaler les bogues de traduction à <lkppo@free.fr>.\n"
#: src/xz/message.c:1249 #: src/xz/message.c:1250
#, c-format #, c-format
msgid "%s home page: <%s>\n" msgid "%s home page: <%s>\n"
msgstr "Page du projet %s : <%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." 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 #: src/xz/options.c:86
#, c-format #, c-format
@ -976,3 +992,9 @@ msgstr "Impossible d'écrire vers la sortie standard"
#: src/common/tuklib_exit.c:42 #: src/common/tuklib_exit.c:42
msgid "Unknown error" msgid "Unknown error"
msgstr "Erreur inconnue" 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"

989
po/hr.po Normal file
View File

@ -0,0 +1,989 @@
# Croatian translation of xz.
# This file is put in the public domain.
#
# Božidar Putanec <bozidarp@yahoo.com>, 2020, 2022.
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: 2023-05-01 16:13-0700\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 19.12.3\n"
#: src/xz/args.c:63
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: nevaljani argument za --block-list"
#: src/xz/args.c:73
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Previše argumenata za --block-list"
#: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list"
msgstr "0 se može koristiti samo kao zadnji element za --block-list"
#: src/xz/args.c:406
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Nepoznati tip formata datoteke"
#: src/xz/args.c:429 src/xz/args.c:437
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Nepodržani tip provjere integriteta"
#: src/xz/args.c:473
msgid "Only one file can be specified with `--files' or `--files0'."
msgstr "Samo jednu datoteku smijete navesti uz opcije „--files” ili „--files0”."
#: src/xz/args.c:541
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Varijabla okoline %s sadrži previše argumenata"
#: src/xz/args.c:643
msgid "Compression support was disabled at build time"
msgstr "Tijekom izrade programa onemogućena je podrška za kompresiju"
#: src/xz/args.c:650
msgid "Decompression support was disabled at build time"
msgstr "Tijekom izrade programa onemogućena je podrška za dekompresiju"
#: src/xz/coder.c:110
msgid "Maximum number of filters is four"
msgstr "Moguće je najviše do četiri filtara"
#: src/xz/coder.c:129
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Ograničenje upotrebe memorije premalo je za danu postavku filtra."
#: src/xz/coder.c:159
msgid "Using a preset in raw mode is discouraged."
msgstr ""
"Nije preporučeno koristiti pretpostavke (unaprijed postavljene postavke)\n"
"u sirovom načinu rada."
#: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions."
msgstr "Točne opcije pretpostavki mogu ovisiti o verziji softvera."
#: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Samo LZMA1 filtar podržava .lzma format"
#: src/xz/coder.c:192
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 se ne može koristi za .xz format"
#: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout"
msgstr "Lanac filtara nije kompatibilan s --flush-timeout"
#: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Prebacivanje u jednodretveni rad zbog --flush-timeout"
#: src/xz/coder.c:235
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Koristimo do %<PRIu32> dretvi."
#: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options"
msgstr "Lanac filtara ili opcije filtara nisu podržane"
#: src/xz/coder.c:263
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Za dekompresiju će trebati %s MiB memorije."
#: 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 ""
"Prilagođen je broj dretvi od %s na %s\n"
"da se ne premaši ograničenje upotrebe memorije od %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 ""
"Prilagođena je veličina LZMA%c rječnika od %s na %s\n"
"da se ne premaši ograničenje upotrebe memorije od %s MiB"
#: src/xz/file_io.c:110 src/xz/file_io.c:118
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Greška pri stvaranju cijevi: %s"
#: src/xz/file_io.c:173
msgid "Sandbox is disabled due to incompatible command line arguments"
msgstr "Sandbox je onemogućen zbog nekompatibilnih argumenata naredbenog retka"
#: src/xz/file_io.c:216
msgid "Sandbox was successfully enabled"
msgstr "Sandbox je uspješno omogućen"
#: src/xz/file_io.c:220
msgid "Failed to enable the sandbox"
msgstr "Nije uspjelo omogućiti sandbox"
#: src/xz/file_io.c:262
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() nije uspjela: %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: Izgleda da je datoteka pomaknuta -- ne briše se"
#: src/xz/file_io.c:339 src/xz/file_io.c:878
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Brisanje nije moguće: %s"
#: src/xz/file_io.c:364
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Promijeniti vlasnika datoteke nije moguće: %s"
#: src/xz/file_io.c:370
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Promijeniti grupu datoteke nije moguće: %s"
#: src/xz/file_io.c:389
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Nije moguće postaviti prava dostupa: %s"
#: src/xz/file_io.c:515
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Greška pri dobavljanju statusnih flagova datoteke iz standardnog ulaza: %s"
#: src/xz/file_io.c:572 src/xz/file_io.c:634
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: To je simbolička poveznica, preskačemo"
#: src/xz/file_io.c:663
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: To je direktorij, preskačemo"
#: src/xz/file_io.c:669
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: To nije regularna datoteka, preskačemo"
#: src/xz/file_io.c:686
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Datoteka ima postavljen setuid ili setgid bit, preskačemo"
#: src/xz/file_io.c:693
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Datoteka ima postavljen sticky bit, preskačemo"
#: src/xz/file_io.c:700
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Ulazna datoteka ima više od jedne tvrde poveznice, preskačemo"
#: src/xz/file_io.c:788
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Greška pri vraćanju statusnih flagova na standardni ulaz: %s"
#: src/xz/file_io.c:836
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Greška pri dobavljanju statusnih flagova datoteke iz standardnog izlazu: %s"
#: src/xz/file_io.c:1014
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Greška pri vraćanju O_APPEND flagova na standardni izlaz: %s"
#: src/xz/file_io.c:1026
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Nije uspjelo zatvoriti datoteku: %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: Poziciona greška pri pokušaju stvaranja raštrkane datoteke: %s"
#: src/xz/file_io.c:1157
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Greška pri čitanju: %s"
#: src/xz/file_io.c:1177
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Greška pozicioniranja u datoteci: %s"
#: src/xz/file_io.c:1187
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Neočekivani kraj datoteke"
#: src/xz/file_io.c:1246
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Greška pri pisanju: %s"
#: src/xz/hardware.c:107
msgid "Disabled"
msgstr "Onemogućeno"
#. 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 "Ukupna količina fizičke memorije (RAM): "
#: src/xz/hardware.c:128
msgid "Memory usage limit for compression: "
msgstr " Ograničenje memorije za kompresiju: "
#: src/xz/hardware.c:130
msgid "Memory usage limit for decompression: "
msgstr " Ograničenje memorije za dekompresiju: "
#. 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 "Nema"
#. 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 "Neznan-2"
#: src/xz/list.c:73
msgid "Unknown-3"
msgstr "Neznan-3"
#: src/xz/list.c:75
msgid "Unknown-5"
msgstr "Neznan-5"
#: src/xz/list.c:76
msgid "Unknown-6"
msgstr "Neznan-6"
#: src/xz/list.c:77
msgid "Unknown-7"
msgstr "Neznan-7"
#: src/xz/list.c:78
msgid "Unknown-8"
msgstr "Neznan-8"
#: src/xz/list.c:79
msgid "Unknown-9"
msgstr "Neznan-9"
#: src/xz/list.c:81
msgid "Unknown-11"
msgstr "Neznan-11"
#: src/xz/list.c:82
msgid "Unknown-12"
msgstr "Neznan-12"
#: src/xz/list.c:83
msgid "Unknown-13"
msgstr "Neznan-13"
#: src/xz/list.c:84
msgid "Unknown-14"
msgstr "Neznan-14"
#: src/xz/list.c:85
msgid "Unknown-15"
msgstr "Neznan-15"
#: src/xz/list.c:153
#, c-format
msgid "%s: File is empty"
msgstr "%s: Datoteka je prazna"
#: src/xz/list.c:158
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Premala, a da bi bila valjana .xz datoteka"
#. 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 "Tok'i Blok'i Komprim'no Dekomprim'no Omjer Kontrol Datoteka"
#: src/xz/list.c:717
#, c-format
msgid " Streams: %s\n"
msgstr " Tok(a/ova): %s\n"
#: src/xz/list.c:719
#, c-format
msgid " Blocks: %s\n"
msgstr " Blok(a/ova): %s\n"
#: src/xz/list.c:721
#, c-format
msgid " Compressed size: %s\n"
msgstr " Komprimirana veličina: %s\n"
#: src/xz/list.c:724
#, c-format
msgid " Uncompressed size: %s\n"
msgstr " Dekomprimirana veličina: %s\n"
#: src/xz/list.c:727
#, c-format
msgid " Ratio: %s\n"
msgstr " Omjer: %s\n"
#: src/xz/list.c:729
#, c-format
msgid " Check: %s\n"
msgstr " Kontrola: %s\n"
#: src/xz/list.c:730
#, c-format
msgid " Stream padding: %s\n"
msgstr " Ispuna toka: %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 ""
" Tokovi:\n"
" Tok Blokovi KompOffset DekompOffset KompVeličina DekompOffset Omjer Kontrola Ispuna"
#. 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 ""
" Blokovi:\n"
" Tok Blok KompOffset DekompOffset KompVeličina DekompOffset Omjer Kontrola"
#. TRANSLATORS: These are additional column headings
#. for the most verbose listing mode. CheckVal
#. (Check value), Flags, and Filters are left aligned.
#. Header (Block Header Size), CompSize, and MemUsage
#. are right aligned. %*s is replaced with 0-120
#. spaces to make the CheckVal column wide enough.
#. Test with "xz -lvv foo.xz".
#: src/xz/list.c:825
#, c-format
msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
msgstr " KonSvota %*s Zaglav Flags KompVel Memorija Filtri"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Potrebna memorija: %s MiB\n"
#: src/xz/list.c:905 src/xz/list.c:1080
#, c-format
msgid " Sizes in headers: %s\n"
msgstr " Veličine u zaglavljima: %s\n"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "Yes"
msgstr "Da"
#: 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 " Potrebna je inačica XY Utils: %s ili viša\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 datoteka\n"
msgstr[1] "%s datoteke\n"
msgstr[2] "%s datoteka\n"
#: src/xz/list.c:1070
msgid "Totals:"
msgstr "Ukupno:"
#: src/xz/list.c:1071
#, c-format
msgid " Number of files: %s\n"
msgstr " Broj datoteka: %s\n"
#: src/xz/list.c:1146
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list radi samo sa .xz datoteke (--format=xz ili --format=auto)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input"
msgstr "--list ne podržava čitanje iz standardnog izlaza"
#: src/xz/main.c:89
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Greška pri čitanju datoteka: %s"
#: src/xz/main.c:96
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Neočekivani kraj ulaznih podataka tijekom čitanja imena datoteka"
#: 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: Prazni (null) znak pronađen pri čitanju imena datoteka;\n"
"možda ste mislili koristiti „--files0” umjesto „--files”?"
#: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Komprimiranje i dekomprimiranje s --robot još nije podržano."
#: src/xz/main.c:252
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr ""
"Nije moguće čitati podatke iz standardnog ulaza\n"
"dok se čitaju imena datoteka iz standardnog ulaza"
#. 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 "Interna greška (bug)"
#: src/xz/message.c:784
msgid "Cannot establish signal handlers"
msgstr "Nije moguće uspostaviti rukovatelje signala"
#: src/xz/message.c:793
msgid "No integrity check; not verifying file integrity"
msgstr "Nema provjere integriteta -- ne provjeravamo integritet datoteke"
#: src/xz/message.c:796
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Nepodržani tip provjere integriteta -- ne provjeravamo integritet datoteke"
#: src/xz/message.c:803
msgid "Memory usage limit reached"
msgstr "Dostignuto je ograničenje za korištenje memorije"
#: src/xz/message.c:806
msgid "File format not recognized"
msgstr "Format datoteke nije prepoznat"
#: src/xz/message.c:809
msgid "Unsupported options"
msgstr "Nepodržane opcije"
#: src/xz/message.c:812
msgid "Compressed data is corrupt"
msgstr "Komprimirani podaci su oštećeni"
#: src/xz/message.c:815
msgid "Unexpected end of input"
msgstr "Neočekivani kraj ulaznih podataka"
#: src/xz/message.c:848
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB memorije je potrebno. Ograničenje je onemogućeno."
#: src/xz/message.c:876
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB memorije je potrebno. Ograničenje je %s."
#: src/xz/message.c:1043
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Lanac filtara: %s\n"
#: src/xz/message.c:1053
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Pokušajte s „`%s --help“ za pomoć i više informacija."
#: src/xz/message.c:1079
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
"Uporaba: %s [OPCIJA]... [FILE]...\n"
"Komprimira ili dekomprimira DATOTEKE u .xz formatu.\n"
"\n"
#: src/xz/message.c:1086
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Obvezni argumenti za duge opcije, obvezni su i za kratke opcije.\n"
#: src/xz/message.c:1090
msgid " Operation mode:\n"
msgstr " Način rada:\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 komprimira (prisilna kompresija)\n"
" -d, --decompress dekomprimira (prisilna dekompresija)\n"
" -t, --test testira integritet komprimirane datoteke\n"
" -l, --list ispiše podatke o .xz datotekama"
#: src/xz/message.c:1099
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Modifikatori načina rada:\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 zadrži (ne briše) navedene ulazne datoteke\n"
" -f, --force piše preko izlaznih datoteka i\n"
" preko (de)komprimiranih poveznica \n"
" -c, --stdout piše na standardni izlaz i ne briše navedene ulazne\n"
" datoteke"
#: src/xz/message.c:1108
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream dekomprimira samo prvi tok i nijemo\n"
" zanemari moguće preostale ulazne podatke"
#: 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 stvara raštrkane datoteke pri dekompresiji\n"
" -S, --suffix=.SUF rabi sufiks „.SUF” za komprimirane datoteke umjesto .xz\n"
" --files[=DATOTEKA] čita imena datoteka za obradu iz DATOTEKE; ako\n"
" DATOTEKA nije dana, imena datoteka čita iz\n"
" standardnog ulaza; ime datoteke mora završiti\n"
" sa znakom novog reda\n"
" --files0[=DATOTEKA] kao --files, ali popis datoteka završi s NULL znakom"
#: src/xz/message.c:1120
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Osnovne opcije za format datoteka i kompresiju:\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 format datoteke za (de)kodirati; mogućnosti za FMT su:\n"
" „auto” (zadano), „xz”, „lzma”, i „raw”\n"
" -C, --check=KONTROLA tip provjere integriteta, jedna od:\n"
" „none” (koristite s oprezom),\n"
" „crc32”, „crc64” (zadano), ili „sha256”"
#: src/xz/message.c:1127
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check ne verificira provjeru integriteta pri dekompresiji"
#: 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 pretpostavke za kompresiju; zadano je 6; uzmite u obzir\n"
" upotrebu memorije za (de)kompresora prije upotrebe 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 pokuša poboljšati omjer kompresije koristeći više CPU\n"
" vremena; ne utječe na potrebnu memoriju za dekompresiju"
#: 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=BROJ rabi ne više od BROJ dretvi; zadano je 1; postavkom 0\n"
" za BROJ koristi se toliko dretvi koliko CPU ima jezgri"
#: 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=VELIČINA započne novi.xz blok nakon svakih VELIČINA bajtova\n"
" ulaznih podataka; ovo rabite za postavljanje\n"
" veličine bloka pri dretvenoj kompresiji"
#: 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=VELIČINE započne novi .xz blok nakon svake navedene\n"
" VELIČINE nekomprimiranih ulaznih podataka;\n"
" VELIČINE su zarezom odvojene"
#: 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=VRIJEME pri komprimiranju, ako je prošlo više od VRIJEME\n"
" milisekundi od prethodnog pražnjenja, a daljne\n"
" čitanje bi blokiralo ulaz, svi podaci na\n"
" čekanju se isprazne iz kodera na izlaz"
#: 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=GRANICA ograničenje memorije za kompresiju\n"
" --memlimit-decompress=GRANICA ograničenje memorije za dekompresiju\n"
" -M, --memlimit=GRANICA ograničenje memorije za kompresiju i dekompresiju\n"
" GRANICA je ograničenje dano u bajtima, % RAM-a, ili 0 (zadano)"
#: 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 ako dane postavke kompresije prekorače ograničenje\n"
" upotrebe memorije, završi s greškom umjesto da\n"
" prilagodi postavke shodno ograničenju memorije"
#: src/xz/message.c:1171
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Prilagođeni lanac filtara za kompresiju\n"
" (alternativa korištenju pretpostavki):"
#: 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[=OPCIJE] LZMA1 ili LZMA2; OPCIJE je popis\n"
" --lzma2[=OPCIJE] nula ili više od sljedećih opcija zarezom odijeljenih;\n"
" (valjane vrijednosti; zadano):\n"
" preset=PRE vrati opcije na pretpostavke (0-9[e])\n"
" dict=BROJ veličina rječnika (4KiB - 1536MiB; 8MiB)\n"
" lc=BROJ broj bitova doslovnog konteksta (0-4; 3)\n"
" lp=BROJ broj bitova doslovne pozicije (0-4; 0)\n"
" pb=BROJ broj pozicionih bitova (0-4; 2)\n"
" mode=NAČIN način kompresije (fast, normal; normal)\n"
" nice=BROJ nice-dužina za podudaranje (2-273; 64)\n"
" mf=IME podudarač (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=BROJ max. dubina traženja; 0=automatski (default)"
#: 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[=OPCIJE] x86 BCJ filtar (32-bit i 64-bit)\n"
" --powerpc[=OPCIJE] PowerPC BCJ filtar (samo veliki endian)\n"
" --ia64[=OPCIJE] IA-64 (Itanium) BCJ filtar\n"
" --arm[=OPCIJE] ARM BCJ filtar (samo mali endian)\n"
" --armthumb[=OPCIJE] ARM-Thumb BCJ filtar (samo mali endian)\n"
" --sparc[=OPCIJE] SPARC BCJ filtar\n"
" Valjane OPCIJE za BCJ filtre:\n"
" start=BROJ početni offset za konverzije (zadano=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[=OPCIJE] Delta filtar; valjane OPCIJE\n"
" (valjane vrijednosti; zadano):\n"
" dist=BROJ razmak između bajtova koji se oduzimaju\n"
" jedan od drugog (1-256; 1)"
#: src/xz/message.c:1215
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Ostale opcije:\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 izostavi upozorenja; „-qq” izostavi i greške\n"
" -v, --verbose opširnije informira; „=vv” još više informira"
#: src/xz/message.c:1223
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn upozorenja nemaju utjecaja na status završetka (izlaza)"
#: src/xz/message.c:1225
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot poruke u strojnom formatu (korisno za 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 pokaže ukupnu količinu RAM-a i trenutno\n"
" aktivna ograničenja korištenja memorije, pa iziđe"
#: 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 prikaže kratku pomoć (izlista samo osnovne opcije)\n"
" -H, --long-help prikaže ovu dugačku pomoć i iziđe"
#: 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 prikaže ovu kratku pomoć i iziđe\n"
" -H, --long-help prikaže dugačku pomoć (izlista i napredne opcije)"
#: src/xz/message.c:1240
msgid " -V, --version display the version number and exit"
msgstr " -V, --version prikaže informacije o inačici i iziđe"
#: src/xz/message.c:1242
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"Ako DATOTEKA nije navedena ili je „-“, čita standardni ulaz.\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 "Greške prijavite na <%s> (na engleskom ili finskom).\n"
#: src/xz/message.c:1250
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
"%s matična mrežna stranica: <%s>\n"
"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>.\n"
#: src/xz/message.c:1254
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "OVO JE RAZVOJNA INAČICA I NIJE NAMIJENJENA ZA PROIZVODNJU."
#: src/xz/options.c:86
#, c-format
msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "%s: Opcije moraju biti parovi „name=value” odvojeni zarezima"
#: src/xz/options.c:93
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nevaljano ime opcije"
#: src/xz/options.c:113
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Nevaljana vrijednost opcije"
#: src/xz/options.c:247
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nepodržana LZMA1/LZMA2 pretpostavka: %s"
#: src/xz/options.c:355
msgid "The sum of lc and lp must not exceed 4"
msgstr "Zbroj lc i lp ne smije biti veći od 4"
#: src/xz/options.c:359
#, c-format
msgid "The selected match finder requires at least nice=%<PRIu32>"
msgstr ""
"Odabrani podudarač (algoritam za pronalaženje podudaranja)\n"
"zahtijeva barem nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: S/uz --format=raw, --suffix=.SUF je nužan osim ako se piše na standardni izlaz"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Ime datoteke nema poznati sufiks, preskačemo"
#: src/xz/suffix.c:185
#, c-format
msgid "%s: File already has `%s' suffix, skipping"
msgstr "%s: Datoteka već ima „%s” sufiks, preskačemo"
#: src/xz/suffix.c:393
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Nevaljani sufiks imena datoteke"
#: src/xz/util.c:71
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Vrijednost nije nula ili pozitivni decimalni cijeli broj"
#: src/xz/util.c:113
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Nevaljana mjerna jedinica (sufiks)"
#: src/xz/util.c:115
msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
msgstr "Valjani sufiksi (mjerne jedinice) su „KiB” (2^10), „MiB” (2^20), i „GiB” (2^30)."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Vrijednost opcije „%s” mora biti u rasponu [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:257
msgid "Empty filename, skipping"
msgstr "Prazna datoteka, preskačemo"
#: src/xz/util.c:271
msgid "Compressed data cannot be read from a terminal"
msgstr "Nije moguće čitati komprimirane podatke iz terminala"
#: src/xz/util.c:284
msgid "Compressed data cannot be written to a terminal"
msgstr "Nije moguće pisati komprimirane podatke na terminala"
#: src/common/tuklib_exit.c:39
msgid "Writing to standard output failed"
msgstr "Pisanje na standardni izlaz nije uspjelo"
#: src/common/tuklib_exit.c:42
msgid "Unknown error"
msgstr "Nepoznata greška"

985
po/hu.po Normal file
View File

@ -0,0 +1,985 @@
# Hungarian translation for xz.
# This file is put in the public domain.
#
# Meskó Balázs <mesko.balazs@fsf.hu>, 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 <mesko.balazs@fsf.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"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 %<PRIu32> threads."
msgstr "Legfeljebb %<PRIu32> 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=%<PRIu32>"
msgstr "A kiválasztott egyezéskeresőhöz legalább nice=%<PRIu32> szükséges"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: --format=raw esetén, --suffix=.SUF szükséges, hacsak nem a szabványosra kimenetre ír"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: A fájlnév utótagja ismeretlen, kihagyás"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "A(z) „%s” kapcsoló értékének a(z) [%<PRIu64>, %<PRIu64>] 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"

479
po/it.po

File diff suppressed because it is too large Load Diff

972
po/ko.po Normal file
View File

@ -0,0 +1,972 @@
# Korean translation for the xz.
# This file is put in the public domain.
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2019, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.6\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2018-04-29 18:19+0300\n"
"PO-Revision-Date: 2022-06-28 16:23+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\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-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 3.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 "최대 필터 갯수는 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 ".xz 형식에는 LZMA1 필터를 사용할 수 없습니다"
#: 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 %<PRIu32> threads."
msgstr "최대 %<PRIu32> 스레드를 사용합니다."
#: 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 MiB를 넘지 않으려 %s(에)서 %s(으)로 스레드 수를 조정했습니다"
#: 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 "메모리 사용량 제한 %4$s MiB를 넘지 않으려 %2$s MiB에서 %3$s MiB로 LZMA%1$c 딕셔너리 용량을 조정했습니다"
#: 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:224
msgid "Failed to enable the sandbox"
msgstr "샌드 박스 활성화 실패"
#: src/xz/file_io.c:266
#, 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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: 파일을 이동한 것 같음, 제거 안함"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: 제거할 수 없음: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: 파일 소유자를 설정할 수 없음: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: 파일 소유 그룹을 설정할 수 없음: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: 파일 권한을 설정할 수 없음: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "표준 입력에서 파일 상태 플래그 가져오기 오류: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: 심볼릭 링크, 건너뜀"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: 디렉터리입니다, 건너뜀"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: 일반 파일 아님, 건너뜀"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: setuid 또는 setgid 비트 설정 있음, 건너뜀"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: 끈적이 비트 설정이 있는 파일, 건너뜀"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: 입력 파일에 하나 이상의 하드링크가 있습니다, 건너뜀"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "표준 입력으로의 상태 플래그 복원 오류: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "표준 출력에서 파일 상태 플래그 가져오기 오류: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "표준 출력으로의 O_APPEND 플래그 복원 오류: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: 파일 닫기 실패: %s"
#: 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: 분할 파일 생성 시도시 탐색 실패: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: 읽기 오류: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: 파일 탐색 오류: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: 예상치 못한 파일의 끝"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: 쓰기 오류: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "사용 안 함"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "총 물리 메모리양(RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "압축 메모리 사용 제한량: "
#: src/xz/hardware.c:160
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 Header 플래그 압축용량 메모리사용량 필터"
#: 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: 파일 이름을 읽는 도중 NULL 문자 발견. `--files' 옵션 대신 `--files0' 옵션을 사용하시려는게 아닙니까?"
#: 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:728
#, c-format
msgid "%s: "
msgstr "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "내부 오류(버그)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "시그널 처리자를 준비할 수 없습니다"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "무결성 검사 안함. 파일 무결성을 검증하지 않습니다"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "지원하지 않는 무결성 검사 형식. 파일 무결성을 검증하지 않습니다"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "메모리 사용량 한계에 도달했습니다"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "파일 형식을 인식할 수 없음"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "지원하지 않는 옵션"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "압축 데이터 깨짐"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "예상치 못한 입력 끝"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB 메모리 용량이 필요합니다. 제한을 비활성합니다."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB 메모리 용량이 필요합니다. 제한 값은 %s 입니다."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: 필터 체인: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "자세한 사용법은 `%s --help'를 입력하십시오."
#: src/xz/message.c:1093
#, 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:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "긴 옵션 버전의 필수 인자는 짧은 옵션 버전에도 해당합니다.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " 동작 방식:\n"
#: src/xz/message.c:1107
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:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" 동작 지정:\n"
#: 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 입력 파일을 유지합니다(삭제 안함)\n"
" -f, --force 출력 파일을 강제로 덮어쓰고 링크도 압축(해제)합니다\n"
" -c, --stdout 표준 출력으로 기록하고 입력 파일을 삭제하지 않습니다"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream 첫번째 스트림만 압축해제하며, 나머지 입력 데이터는\n"
" 조용히 무시합니다"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse 압축 해제에 활용할 분할 파일을 만들지 않음\n"
" -S, --suffix=.<확장자>\n"
" 압축 파일 확장자에 `.<확장자>'를 사용합니다\n"
" --files[=<파일>]\n"
" <파일> 에서 처리할 파일 이름을 읽습니다. <파일>을\n"
" 생략하면 표준 입력에서 파일 이름을 읽습니다.\n"
" 파일 이름은 개행 문자로 끝나야합니다\n"
" --files0[=<파일>]\n"
" --files 옵션과 비슷하지만 NULL 문자로 끝납니다"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" 기본 파일 형식 및 압축 옵션:\n"
#: 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"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'"
msgstr ""
" -F, --format=<형식> 인코딩 디코딩할 파일 형식:\n"
" `auto' (기본), `xz', `lzma', and `raw'\n"
" -C, --check=<검사> 무결성 검사 형식: `none' (위험),\n"
" `crc32', `crc64' (기본), `sha256'"
#: src/xz/message.c:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check 압축 해제시 무결성 검사를 수행하지 않습니다"
#: 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!"
msgstr ""
" -0 ... -9 압축 프리셋. 기본값은 6 입니다. 7-9를 사용하려면 입축\n"
" 메모리 사용량*과* 압축 해제 메모리 사용량을 지정하십시오!"
#: src/xz/message.c:1149
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: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 ""
" -T, --threads=<개수>\n"
" 최대 스레드 <개수>를 사용합니다. 기본값은 1 입니다\n"
" 실제 프로세서 코어만큼의 스레드를 사용하려면 0 값으로\n"
" 지정합니다"
#: 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 ""
" --block-size=<크기>\n"
" 모든 <크기>의 입력 다음 새 .xz 블록을 시작합니다.\n"
" 스레드 압축에 블록 크기를 지정할 때 사용합니다"
#: 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 ""
" --block-list=<크기>\n"
" 콤마로 구분한 연속 지정값 만큼 압축해제한 데이터 용량을\n"
" 넘긴 후 새 .xz 블록을 시작합니다"
#: 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 ""
" --flush-timeout=<제한시간>\n"
" 앞서 플러싱한 후 더 많은 블록 입력을 읽어들일 때 밀리초\n"
" 단위 <제한시간>을 넘기면 모든 대기 데이터를\n"
" 플러싱아웃합니다"
#: 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"
" 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:1179
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:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
"압축용 개별 필터 체인 설정(프리셋 사용을 대신함):"
#: 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"
" 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"
" (유효값, 기본값):\n"
" preset=<프리셋> 옵션을 <프리셋>값으로 초기화(0-9[e])\n"
" dict=<숫자> 딕셔너리 크기(4KiB - 1536MiB, 8MiB)\n"
" lc=<숫자> 리터럴 컨텍스트 비트 수(0-4, 3)\n"
" lp=<숫자> 리터럴 위치 비트 수(0-4, 0)\n"
" pb=<숫자> 위치 비트 갯수(0-4, 2)\n"
" mode=<모드> 압축 모드 fast 또는 normal, normal)\n"
" nice=<숫자> nice 일치 길이값(2-273, 64)\n"
" mf=<이름> 일치 탐색기(hc3, hc4, bt2, bt3, bt4 중\n"
" 하나, bt4)\n"
" depth=<숫자> 최대 검색 깊이. 0=자동(기본값)"
#: src/xz/message.c:1209
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-bit, 64-bit)\n"
" --powerpc[=<옵션>] PowerPC BCJ 필터(빅 엔디언 전용)\n"
" --ia64[=<옵션>] IA-64 (아이태니엄) BCJ 필터\n"
" --arm[=<옵션>] ARM BCJ 필터(리틀 엔디언 전용)\n"
" --armthumb[=<옵션>] ARM-Thumb BCJ 필터(리틀 엔디언 전용)\n"
" --sparc[=<옵션>] SPARC BCJ 필터\n"
" 모든 BCJ 필터의 유효한 OPTS:\n"
" start=<숫자> 변환 시작 오프셋(기본=0)"
#: src/xz/message.c:1221
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=<숫자> 각 바이트 값의 차이 값(1-256, 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
"기타 옵션:\n"
#: src/xz/message.c:1232
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:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn 경고가 종료 상태에 영향을 주지 않게합니다"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot 기계 해석용 메시지를 사용합니다(스크립트에 적합)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory 총 사용 메모리양과 현재 활성 메모리 사용 제한 값을\n"
" 표시하고 빠져나갑니다"
#: 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 간단한 도움말을 표시합니다(기본 옵션만 나열)\n"
" -H, --long-help 이 긴 도움말을 표시하고 빠져나갑니다"
#: 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 이 간단한 도움말을 표시하고 빠져나갑니다\n"
" -H, --long-help 긴 도움말을 표시합니다(고급 옵션도 나열)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version 버전 번호를 표시하고 빠져나갑니다"
#: src/xz/message.c:1256
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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "<%s> (영문 또는 핀란드어)에 버그를 보고하십시오.\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%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"
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=%<PRIu32>"
msgstr "선택한 일치 탐색기는 최소한 nice=%<PRIu32> 상태여야합니다"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: 표준 출력으로 기록하지 않는 한 --format=raw, --suffix=.SUF 옵션이 필요합니다"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: 파일 이름에 알 수 없는 확장자 붙음, 건너뜀"
#: src/xz/suffix.c:185
#, 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: 값은 10진 양수입니다"
#: 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), and `GiB' (2^30) 입니다."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "`%s' 옵션 값은 범위[%<PRIu64>, %<PRIu64>] 안에 있어야 합니다"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "파일 이름 없음, 건너뜀"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "압축 데이터를 터미널에서 읽을 수 없습니다"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "압축 데이터를 터미널에 기록할 수 없습니다"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "표준 출력 기록 실패"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "알 수 없는 오류"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "비호환 명령행 인자값이 있어 샌드박스를 비활성했습니다"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "샌드 박스 활성화에 성공했습니다"

239
po/pl.po
View File

@ -1,16 +1,17 @@
# Polish translation for xz. # Polish translation for xz.
# This file is in the public domain. # This file is put in the public domain.
# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2014. # Jakub Bogusz <qboosh@pld-linux.org>, 2011-2019.
# #
msgid "" msgid ""
msgstr "" 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" "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2014-09-14 21:56+0300\n" "POT-Creation-Date: 2018-04-29 18:19+0300\n"
"PO-Revision-Date: 2014-10-15 20:53+0200\n" "PO-Revision-Date: 2019-03-05 05:30+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n" "Language: pl\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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" msgid "The environment variable %s contains too many arguments"
msgstr "Zmienna środowiskowa %s zawiera zbyt dużo argumentów" 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 #: src/xz/coder.c:110
msgid "Maximum number of filters is four" msgid "Maximum number of filters is four"
msgstr "Maksymalna liczba filtrów to cztery" 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" msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Przełączanie w tryb jednowątkowy z powodu --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 #, c-format
msgid "Using up to %<PRIu32> threads." msgid "Using up to %<PRIu32> threads."
msgstr "Maksymalna liczba używanych wątków: %<PRIu32>." msgstr "Maksymalna liczba używanych wątków: %<PRIu32>."
#: src/xz/coder.c:247 #: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options" msgid "Unsupported filter chain or filter options"
msgstr "Nieobsługiwany łańcuch filtrów lub opcje filtra" msgstr "Nieobsługiwany łańcuch filtrów lub opcje filtra"
#: src/xz/coder.c:255 #: src/xz/coder.c:263
#, c-format #, c-format
msgid "Decompression will need %s MiB of memory." msgid "Decompression will need %s MiB of memory."
msgstr "Dekompresja będzie wymagała %s MiB pamięci." msgstr "Dekompresja będzie wymagała %s MiB pamięci."
#: src/xz/coder.c:290 #: src/xz/coder.c:300
#, c-format #, c-format
msgid "Adjusted the number of threads from %s to %s 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 "Skorygowano liczbę wątków z %s do %s, aby nie przekroczyć limitu użycia pamięci %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 #, 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 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" 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 #, c-format
msgid "Error creating a pipe: %s" msgid "Error creating a pipe: %s"
msgstr "Błąd tworzenia potoku: %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 #, c-format
msgid "%s: poll() failed: %s" msgid "%s: poll() failed: %s"
msgstr "%s: poll() nie powiodło się: %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 #. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously #. of the original file, and in that case it obviously
#. shouldn't be removed. #. shouldn't be removed.
#: src/xz/file_io.c:236 #: src/xz/file_io.c:332
#, c-format #, c-format
msgid "%s: File seems to have been moved, not removing" msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Plik wygląda na przeniesiony, nie zostanie usunięty" 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 #, c-format
msgid "%s: Cannot remove: %s" msgid "%s: Cannot remove: %s"
msgstr "%s: Nie można usunąć: %s" msgstr "%s: Nie można usunąć: %s"
#: src/xz/file_io.c:268 #: src/xz/file_io.c:364
#, c-format #, c-format
msgid "%s: Cannot set the file owner: %s" msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Nie można ustawić właściciela pliku: %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 #, c-format
msgid "%s: Cannot set the file group: %s" msgid "%s: Cannot set the file group: %s"
msgstr "%s: Nie można ustawić grupy pliku: %s" msgstr "%s: Nie można ustawić grupy pliku: %s"
#: src/xz/file_io.c:293 #: src/xz/file_io.c:389
#, c-format #, c-format
msgid "%s: Cannot set the file permissions: %s" msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Nie można ustawić uprawnień pliku: %s" msgstr "%s: Nie można ustawić uprawnień pliku: %s"
#: src/xz/file_io.c:399 #: src/xz/file_io.c:515
#, c-format #, c-format
msgid "Error getting the file status flags from standard input: %s" msgid "Error getting the file status flags from standard input: %s"
msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wejścia: %s" msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wejścia: %s"
#: src/xz/file_io.c:408 #: src/xz/file_io.c:572 src/xz/file_io.c:634
#, 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
#, c-format #, c-format
msgid "%s: Is a symbolic link, skipping" msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Jest dowiązaniem symbolicznym, pominięto" msgstr "%s: Jest dowiązaniem symbolicznym, pominięto"
#: src/xz/file_io.c:551 #: src/xz/file_io.c:663
#, c-format #, c-format
msgid "%s: Is a directory, skipping" msgid "%s: Is a directory, skipping"
msgstr "%s: Jest katalogiem, pominięto" msgstr "%s: Jest katalogiem, pominięto"
#: src/xz/file_io.c:557 #: src/xz/file_io.c:669
#, c-format #, c-format
msgid "%s: Not a regular file, skipping" msgid "%s: Not a regular file, skipping"
msgstr "%s: Nie jest zwykłym plikiem, pominięto" msgstr "%s: Nie jest zwykłym plikiem, pominięto"
#: src/xz/file_io.c:574 #: src/xz/file_io.c:686
#, c-format #, c-format
msgid "%s: File has setuid or setgid bit set, skipping" msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Plik ma ustawiony bit setuid lub setgid, pominięto" 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 #, c-format
msgid "%s: File has sticky bit set, skipping" msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Plik ma ustawiony bit sticky, pominięto" msgstr "%s: Plik ma ustawiony bit sticky, pominięto"
#: src/xz/file_io.c:588 #: src/xz/file_io.c:700
#, c-format #, c-format
msgid "%s: Input file has more than one hard link, skipping" 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" 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 #, c-format
msgid "Error restoring the status flags to standard input: %s" msgid "Error restoring the status flags to standard input: %s"
msgstr "Błąd podczas odtwarzania flag stanu dla standardowego wejścia: %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 #, c-format
msgid "Error getting the file status flags from standard output: %s" msgid "Error getting the file status flags from standard output: %s"
msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wyjścia: %s" msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wyjścia: %s"
#: src/xz/file_io.c:723 #: src/xz/file_io.c:1014
#, 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
#, c-format #, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s" msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Błąd podczas odtwarzania flagi O_APPEND dla standardowego wyjścia: %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 #, c-format
msgid "%s: Closing the file failed: %s" msgid "%s: Closing the file failed: %s"
msgstr "%s: Zamknięcie pliku nie powiodło się: %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 #, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s" 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" 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 #, c-format
msgid "%s: Read error: %s" msgid "%s: Read error: %s"
msgstr "%s: Błąd odczytu: %s" msgstr "%s: Błąd odczytu: %s"
#: src/xz/file_io.c:1059 #: src/xz/file_io.c:1177
#, c-format #, c-format
msgid "%s: Error seeking the file: %s" msgid "%s: Error seeking the file: %s"
msgstr "%s: Błąd podczas zmiany pozycji w pliku: %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 #, c-format
msgid "%s: Unexpected end of file" msgid "%s: Unexpected end of file"
msgstr "%s: Nieoczekiwany koniec pliku" msgstr "%s: Nieoczekiwany koniec pliku"
#: src/xz/file_io.c:1128 #: src/xz/file_io.c:1246
#, c-format #, c-format
msgid "%s: Write error: %s" msgid "%s: Write error: %s"
msgstr "%s: Błąd zapisu: %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 #. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to #. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz". #. 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" msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Strum. Bloki Spakowany Rozpakowany Wsp. Kontrola Nazwa pliku" msgstr "Strum. Bloki Spakowany Rozpakowany Wsp. Kontrola Nazwa pliku"
#: src/xz/list.c:711 #: src/xz/list.c:717
#, c-format #, c-format
msgid " Streams: %s\n" msgid " Streams: %s\n"
msgstr " Strumienie: %s\n" msgstr " Strumienie: %s\n"
#: src/xz/list.c:713 #: src/xz/list.c:719
#, c-format #, c-format
msgid " Blocks: %s\n" msgid " Blocks: %s\n"
msgstr " Bloki: %s\n" msgstr " Bloki: %s\n"
#: src/xz/list.c:715 #: src/xz/list.c:721
#, c-format #, c-format
msgid " Compressed size: %s\n" msgid " Compressed size: %s\n"
msgstr " Rozmiar spakowany: %s\n" msgstr " Rozmiar spakowany: %s\n"
#: src/xz/list.c:718 #: src/xz/list.c:724
#, c-format #, c-format
msgid " Uncompressed size: %s\n" msgid " Uncompressed size: %s\n"
msgstr " Rozmiar rozpakowany: %s\n" msgstr " Rozmiar rozpakowany: %s\n"
#: src/xz/list.c:721 #: src/xz/list.c:727
#, c-format #, c-format
msgid " Ratio: %s\n" msgid " Ratio: %s\n"
msgstr " Współczynnik: %s\n" msgstr " Współczynnik: %s\n"
#: src/xz/list.c:723 #: src/xz/list.c:729
#, c-format #, c-format
msgid " Check: %s\n" msgid " Check: %s\n"
msgstr " Kontrola spójności: %s\n" msgstr " Kontrola spójności: %s\n"
#: src/xz/list.c:724 #: src/xz/list.c:730
#, c-format #, c-format
msgid " Stream padding: %s\n" msgid " Stream padding: %s\n"
msgstr " Wyrównanie strumienia: %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 #. TRANSLATORS: The second line is column headings. All except
#. Check are right aligned; Check is left aligned. Test with #. Check are right aligned; Check is left aligned. Test with
#. "xz -lv foo.xz". #. "xz -lv foo.xz".
#: src/xz/list.c:752 #: src/xz/list.c:758
msgid "" msgid ""
" Streams:\n" " Streams:\n"
" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
@ -384,7 +395,7 @@ msgstr ""
#. TRANSLATORS: The second line is column headings. All #. TRANSLATORS: The second line is column headings. All
#. except Check are right aligned; Check is left aligned. #. except Check are right aligned; Check is left aligned.
#: src/xz/list.c:807 #: src/xz/list.c:813
#, c-format #, c-format
msgid "" msgid ""
" Blocks:\n" " Blocks:\n"
@ -400,37 +411,37 @@ msgstr ""
#. are right aligned. %*s is replaced with 0-120 #. are right aligned. %*s is replaced with 0-120
#. spaces to make the CheckVal column wide enough. #. spaces to make the CheckVal column wide enough.
#. Test with "xz -lvv foo.xz". #. Test with "xz -lvv foo.xz".
#: src/xz/list.c:819 #: src/xz/list.c:825
#, c-format #, c-format
msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
msgstr " S.kontr. %*sNagłówek Flagi Rozm. spak. Uż.pamięci Filtry" 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 #, c-format
msgid " Memory needed: %s MiB\n" msgid " Memory needed: %s MiB\n"
msgstr " Wymagana pamięć: %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 #, c-format
msgid " Sizes in headers: %s\n" msgid " Sizes in headers: %s\n"
msgstr " Rozmiar w nagłówkach: %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" msgid "Yes"
msgstr "Tak" msgstr "Tak"
#: src/xz/list.c:900 src/xz/list.c:1075 #: src/xz/list.c:906 src/xz/list.c:1081
msgid "No" msgid "No"
msgstr "Nie" msgstr "Nie"
#: src/xz/list.c:901 src/xz/list.c:1076 #: src/xz/list.c:907 src/xz/list.c:1082
#, c-format #, c-format
msgid " Minimum XZ Utils version: %s\n" msgid " Minimum XZ Utils version: %s\n"
msgstr " Minimalna wersja XZ Utils: %s\n" msgstr " Minimalna wersja XZ Utils: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this #. 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". #. 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 #, c-format
msgid "%s file\n" msgid "%s file\n"
msgid_plural "%s files\n" msgid_plural "%s files\n"
@ -438,20 +449,20 @@ msgstr[0] "%s plik\n"
msgstr[1] "%s pliki\n" msgstr[1] "%s pliki\n"
msgstr[2] "%s plików\n" msgstr[2] "%s plików\n"
#: src/xz/list.c:1064 #: src/xz/list.c:1070
msgid "Totals:" msgid "Totals:"
msgstr "Sumarycznie:" msgstr "Sumarycznie:"
#: src/xz/list.c:1065 #: src/xz/list.c:1071
#, c-format #, c-format
msgid " Number of files: %s\n" msgid " Number of files: %s\n"
msgstr " Liczba plików: %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)" 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)" 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" msgid "--list does not support reading from standard input"
msgstr "--list nie obsługuje odczytu ze standardowego wejścia" 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." msgid "Compression and decompression with --robot are not supported yet."
msgstr "Kompresja i dekompresja z opcją --robot nie jest jeszcze obsługiwana." 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" 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" 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: ". #. of the line in messages. Usually it becomes "xz: ".
#. This is a translatable string because French needs #. This is a translatable string because French needs
#. a space before a colon. #. a space before a colon.
#: src/xz/message.c:713 #: src/xz/message.c:714
#, c-format #, c-format
msgid "%s: " msgid "%s: "
msgstr "%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)" msgid "Internal error (bug)"
msgstr "Błąd wewnętrzny" msgstr "Błąd wewnętrzny"
#: src/xz/message.c:783 #: src/xz/message.c:784
msgid "Cannot establish signal handlers" msgid "Cannot establish signal handlers"
msgstr "Nie można ustawić obsługi sygnałów" 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" msgid "No integrity check; not verifying file integrity"
msgstr "Brak kontroli spójności; poprawność plików nie będzie weryfikowana" 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" 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" 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" msgid "Memory usage limit reached"
msgstr "Osiągnięto limit użycia pamięci" msgstr "Osiągnięto limit użycia pamięci"
#: src/xz/message.c:805 #: src/xz/message.c:806
msgid "File format not recognized" msgid "File format not recognized"
msgstr "Nie rozpoznany format pliku" msgstr "Nie rozpoznany format pliku"
#: src/xz/message.c:808 #: src/xz/message.c:809
msgid "Unsupported options" msgid "Unsupported options"
msgstr "Nieobsługiwane opcje" msgstr "Nieobsługiwane opcje"
#: src/xz/message.c:811 #: src/xz/message.c:812
msgid "Compressed data is corrupt" msgid "Compressed data is corrupt"
msgstr "Dane skompresowane są uszkodzone" msgstr "Dane skompresowane są uszkodzone"
#: src/xz/message.c:814 #: src/xz/message.c:815
msgid "Unexpected end of input" msgid "Unexpected end of input"
msgstr "Nieoczekiwany koniec wejścia" msgstr "Nieoczekiwany koniec wejścia"
#: src/xz/message.c:847 #: src/xz/message.c:848
#, c-format #, c-format
msgid "%s MiB of memory is required. The limiter is disabled." msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Wymagane jest %s MiB pamięci. Limit jest wyłączony." msgstr "Wymagane jest %s MiB pamięci. Limit jest wyłączony."
#: src/xz/message.c:875 #: src/xz/message.c:876
#, c-format #, c-format
msgid "%s MiB of memory is required. The limit is %s." msgid "%s MiB of memory is required. The limit is %s."
msgstr "Wymagane jest %s MiB pamięci. Limit to %s." msgstr "Wymagane jest %s MiB pamięci. Limit to %s."
#: src/xz/message.c:1042 #: src/xz/message.c:1043
#, c-format #, c-format
msgid "%s: Filter chain: %s\n" msgid "%s: Filter chain: %s\n"
msgstr "%s: Łańcuch filtrów: %s\n" msgstr "%s: Łańcuch filtrów: %s\n"
#: src/xz/message.c:1052 #: src/xz/message.c:1053
#, c-format #, c-format
msgid "Try `%s --help' for more information." msgid "Try `%s --help' for more information."
msgstr "Polecenie `%s --help' pokaże więcej informacji." msgstr "Polecenie `%s --help' pokaże więcej informacji."
#: src/xz/message.c:1078 #: src/xz/message.c:1079
#, c-format #, c-format
msgid "" msgid ""
"Usage: %s [OPTION]... [FILE]...\n" "Usage: %s [OPTION]... [FILE]...\n"
@ -554,17 +565,17 @@ msgstr ""
"Kompresja lub dekompresja PLIKÓW w formacie .xz.\n" "Kompresja lub dekompresja PLIKÓW w formacie .xz.\n"
"\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" msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "" msgstr ""
"Argumenty obowiązkowe dla opcji długich są obowiązkowe również dla opcji\n" "Argumenty obowiązkowe dla opcji długich są obowiązkowe również dla opcji\n"
"krótkich.\n" "krótkich.\n"
#: src/xz/message.c:1089 #: src/xz/message.c:1090
msgid " Operation mode:\n" msgid " Operation mode:\n"
msgstr " Tryb pracy:\n" msgstr " Tryb pracy:\n"
#: src/xz/message.c:1092 #: src/xz/message.c:1093
msgid "" msgid ""
" -z, --compress force compression\n" " -z, --compress force compression\n"
" -d, --decompress force decompression\n" " -d, --decompress force decompression\n"
@ -576,7 +587,7 @@ msgstr ""
" -t, --test sprawdzenie spójności plików skompresowanych\n" " -t, --test sprawdzenie spójności plików skompresowanych\n"
" -l, --list wypisanie informacji o plikach .xz" " -l, --list wypisanie informacji o plikach .xz"
#: src/xz/message.c:1098 #: src/xz/message.c:1099
msgid "" msgid ""
"\n" "\n"
" Operation modifiers:\n" " Operation modifiers:\n"
@ -584,7 +595,7 @@ msgstr ""
"\n" "\n"
" Modyfikatory operacji:\n" " Modyfikatory operacji:\n"
#: src/xz/message.c:1101 #: src/xz/message.c:1102
msgid "" msgid ""
" -k, --keep keep (don't delete) input files\n" " -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\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" " -f, --force nadpisywanie plików wyjściowych i (de)kompresja dowiązań\n"
" -c, --stdout zapis na standardowe wyjście, nieusuwanie plików wej." " -c, --stdout zapis na standardowe wyjście, nieusuwanie plików wej."
#: src/xz/message.c:1107 #: src/xz/message.c:1108
msgid "" msgid ""
" --single-stream decompress only the first stream, and silently\n" " --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data" " ignore possible remaining input data"
@ -602,7 +613,7 @@ msgstr ""
" --single-stream dekompresja tylko pierwszego strumienia, ciche\n" " --single-stream dekompresja tylko pierwszego strumienia, ciche\n"
" zignorowanie pozostałych danych wejściowych" " zignorowanie pozostałych danych wejściowych"
#: src/xz/message.c:1110 #: src/xz/message.c:1111
msgid "" msgid ""
" --no-sparse do not create sparse files when decompressing\n" " --no-sparse do not create sparse files when decompressing\n"
" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\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" " wejścia; muszą być zakończone znakiem nowej linii\n"
" --files0[=PLIK] podobnie do --files, ale znakiem kończącym musi być NUL" " --files0[=PLIK] podobnie do --files, ale znakiem kończącym musi być NUL"
#: src/xz/message.c:1119 #: src/xz/message.c:1120
msgid "" msgid ""
"\n" "\n"
" Basic file format and compression options:\n" " Basic file format and compression options:\n"
@ -626,7 +637,7 @@ msgstr ""
"\n" "\n"
" Podstawowe opcje formatu pliku i kompresji:\n" " Podstawowe opcje formatu pliku i kompresji:\n"
#: src/xz/message.c:1121 #: src/xz/message.c:1122
msgid "" msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n" " -F, --format=FMT file format to encode or decode; possible values are\n"
" `auto' (default), `xz', `lzma', and `raw'\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" " -C, --check=TEST typ kontroli spójności: `none' (ostrożnie!),\n"
" `crc32', `crc64' (domyślny) lub `sha256'" " `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" msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check bez kontroli sprawdzania integralności przy dekompresji" msgstr " --ignore-check bez kontroli sprawdzania integralności przy dekompresji"
#: src/xz/message.c:1130 #: src/xz/message.c:1131
msgid "" msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n" " -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!" " 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" " użyciem wartości 7-9 należy wziąć pod uwagę wykorzystanie\n"
" pamięci przy kompresji *oraz* dekompresji!" " pamięci przy kompresji *oraz* dekompresji!"
#: src/xz/message.c:1134 #: src/xz/message.c:1135
msgid "" 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" " does not affect decompressor memory requirements"
@ -660,7 +671,7 @@ msgstr ""
" ilości czasu procesora; nie wpływa na wymagania\n" " ilości czasu procesora; nie wpływa na wymagania\n"
" pamięciowe dekompresora" " pamięciowe dekompresora"
#: src/xz/message.c:1138 #: src/xz/message.c:1139
msgid "" msgid ""
" -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" " -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" " 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" " -T, --threads=ILE użycie maksymalnie ILU wątków; domyślnie 1; 0 oznacza\n"
" tyle, ile jest rdzeni procesorów" " tyle, ile jest rdzeni procesorów"
#: src/xz/message.c:1143 #: src/xz/message.c:1144
msgid "" msgid ""
" --block-size=SIZE\n" " --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"
@ -679,7 +690,7 @@ msgstr ""
" opcja służy do ustawienia rozmiaru bloku dla kompresji\n" " opcja służy do ustawienia rozmiaru bloku dla kompresji\n"
" wielowątkowej" " wielowątkowej"
#: src/xz/message.c:1147 #: src/xz/message.c:1148
msgid "" msgid ""
" --block-list=SIZES\n" " --block-list=SIZES\n"
" start a new .xz block after the given comma-separated\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" " rozpoczęcie nowego bloku .xz po rozdzielonych przecinkiem\n"
" przedziałach danych nieskompresowanych" " przedziałach danych nieskompresowanych"
#: src/xz/message.c:1151 #: src/xz/message.c:1152
msgid "" msgid ""
" --flush-timeout=TIMEOUT\n" " --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\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" " ostatniegu zapisu bloku, a odczyt kolejnych danych byłby\n"
" blokujący, wszystkie gotowe dane są zapisywane" " blokujący, wszystkie gotowe dane są zapisywane"
#: src/xz/message.c:1157 #: src/xz/message.c:1158
#, no-c-format #, no-c-format
msgid "" msgid ""
" --memlimit-compress=LIMIT\n" " --memlimit-compress=LIMIT\n"
@ -717,7 +728,7 @@ msgstr ""
" dekompresji lub obu; LIMIT jest w bajtach, % RAM lub 0\n" " dekompresji lub obu; LIMIT jest w bajtach, % RAM lub 0\n"
" dla limitów domyślnych" " dla limitów domyślnych"
#: src/xz/message.c:1164 #: src/xz/message.c:1165
msgid "" msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n" " --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards" " give an error instead of adjusting the settings downwards"
@ -726,7 +737,7 @@ msgstr ""
" pamięci, zostanie zgłoszony błąd zamiast zmniejszania\n" " pamięci, zostanie zgłoszony błąd zamiast zmniejszania\n"
" ustawień" " ustawień"
#: src/xz/message.c:1170 #: src/xz/message.c:1171
msgid "" msgid ""
"\n" "\n"
" Custom filter chain for compression (alternative for using presets):" " Custom filter chain for compression (alternative for using presets):"
@ -734,7 +745,7 @@ msgstr ""
"\n" "\n"
" Łańcuch własnych filtrów do kompresji (alternatywa do używania -0 .. -9):" " Ł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 "" msgid ""
"\n" "\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\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" " mf=NAZWA dopasowywacz (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=ILE maks. głębokość szukania; 0=auto (domyślne)" " depth=ILE maks. głębokość szukania; 0=auto (domyślne)"
#: src/xz/message.c:1194 #: src/xz/message.c:1195
msgid "" msgid ""
"\n" "\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\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" " Poprawne OPCJE dla wszystkich filtrów BCJ:\n"
" start=ILE offset początku konwersji (domyślnie=0)" " start=ILE offset początku konwersji (domyślnie=0)"
#: src/xz/message.c:1206 #: src/xz/message.c:1207
msgid "" msgid ""
"\n" "\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\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" " dist=ILE odległość między bajtami odejmowanymi od\n"
" siebie (1-256; 1)" " siebie (1-256; 1)"
#: src/xz/message.c:1214 #: src/xz/message.c:1215
msgid "" msgid ""
"\n" "\n"
" Other options:\n" " Other options:\n"
@ -805,7 +816,7 @@ msgstr ""
"\n" "\n"
" Inne opcje:\n" " Inne opcje:\n"
#: src/xz/message.c:1217 #: src/xz/message.c:1218
msgid "" 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" " -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" " -q, --quiet pominięcie ostrzeżeń; dwukrotne podanie pomija też błędy\n"
" -v, --verbose więcej informacji; dwukrotne podanie to jeszcze więcej" " -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" 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" 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)" msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot komunikaty w formacie dla maszyny (do skryptów)" msgstr " --robot komunikaty w formacie dla maszyny (do skryptów)"
#: src/xz/message.c:1227 #: src/xz/message.c:1228
msgid "" 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" " memory usage limits, and exit"
@ -829,7 +840,7 @@ msgstr ""
" --info-memory wyświetlenie całkowitej ilości pamięci RAM oraz aktualnie\n" " --info-memory wyświetlenie całkowitej ilości pamięci RAM oraz aktualnie\n"
" aktywnych limitów pamięci i zakończenie pracy" " aktywnych limitów pamięci i zakończenie pracy"
#: src/xz/message.c:1230 #: src/xz/message.c:1231
msgid "" msgid ""
" -h, --help display the short help (lists only the basic options)\n" " -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit" " -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, --help wyświetlenie krótkiego opisu (tylko podstawowe opcje)\n"
" -H, --long-help wyświetlenie tego długiego opisu i zakończenie" " -H, --long-help wyświetlenie tego długiego opisu i zakończenie"
#: src/xz/message.c:1234 #: src/xz/message.c:1235
msgid "" msgid ""
" -h, --help display this short help and exit\n" " -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)" " -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, --help wyświetlenie tego krótkiego opisu i zakończenie\n"
" -H, --long-help wyświetlenie długiego opisu (także opcje zaawansowane)" " -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" msgid " -V, --version display the version number and exit"
msgstr " -V, --version wyświetlenie informacji o wersji i zakończenie" msgstr " -V, --version wyświetlenie informacji o wersji i zakończenie"
#: src/xz/message.c:1241 #: src/xz/message.c:1242
msgid "" msgid ""
"\n" "\n"
"With no FILE, or when FILE is -, read standard input.\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 #. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW #. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks. #. address for translation bugs. Thanks.
#: src/xz/message.c:1247 #: src/xz/message.c:1248
#, c-format #, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n" msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "" msgstr ""
@ -870,12 +881,12 @@ msgstr ""
"Błędy w tłumaczeniu prosimy zgłaszać na adres\n" "Błędy w tłumaczeniu prosimy zgłaszać na adres\n"
"<translation-team-pl@lists.sourceforge.net>.\n" "<translation-team-pl@lists.sourceforge.net>.\n"
#: src/xz/message.c:1249 #: src/xz/message.c:1250
#, c-format #, c-format
msgid "%s home page: <%s>\n" msgid "%s home page: <%s>\n"
msgstr "Strona domowa %s: <%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." msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "TA WERSJA JEST ROZWOJOWA, NIE PRZEZNACZONA DO UŻYTKU PRODUKCYJNEGO." msgstr "TA WERSJA JEST ROZWOJOWA, NIE PRZEZNACZONA DO UŻYTKU PRODUKCYJNEGO."

1001
po/pt.po Normal file

File diff suppressed because it is too large Load Diff

999
po/pt_BR.po Normal file
View File

@ -0,0 +1,999 @@
# Brazilian Portuguese translations for xz package
# Traduções em português brasileiro para o pacote xz.
# This file is put in the public domain.
# Rafael Fontenelle <rafaelff@gnome.org>, 2019-2021.
msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2022-06-29 17:47+0300\n"
"PO-Revision-Date: 2021-01-06 22:30-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\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: 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 %<PRIu32> threads."
msgstr "Usando até %<PRIu32> 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:224
msgid "Failed to enable the sandbox"
msgstr "Falha ao habilitar o sandbox"
#: src/xz/file_io.c:266
#, 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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: O arquivo parece ter sido movido, não será removido"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Não foi possível remover: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Não foi possível definir o dono do arquivo: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Não foi possível definir o grupo do arquivo: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Não foi possível definir as permissões do arquivo: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Erro ao obter os sinalizadores de status da entrada padrão: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: É um link simbólico, ignorando"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: É um diretório, ignorando"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Não é um arquivo comum, ignorando"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: O arquivo possui o bit setuid ou setgid definido, ignorando"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: O arquivo possui o bit sticky definido, ignorando"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: O arquivo de entrada possui mais de um link físico, ignorando"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Erro ao restaurar os sinalizadores de status para entrada padrão: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Erro ao obter os sinalizadores de status de arquivo da saída padrão: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Erro ao restaurar o sinalizador O_APPEND para a saída padrão: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Fechamento do arquivo falhou: %s"
#: src/xz/file_io.c:1066 src/xz/file_io.c:1309
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Busca falhou ao tentar criar um arquivo esparso: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Erro de leitura: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Erro ao buscar o arquivo: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Fim de arquivo inesperado"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Erro de escrita: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Desabilitado"
# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Quantidade total de memória física (RAM): "
# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Limite de uso de memória para compressão: "
# Espaços reduzidos para manter alinhamento com mensagens adjacentes -- Rafael
#: src/xz/hardware.c:160
msgid "Memory usage limit for decompression: "
msgstr "Limite de uso de memória para descompressão: "
#. 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:728
#, c-format
msgid "%s: "
msgstr "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "Erro interno (bug)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "Não foi possível estabelecer manipuladores de sinais"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "Sem verificação de integridade; não será verificada a integridade do arquivo"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Tipo de verificação de integridade sem suporte; não será verificada a integridade do arquivo"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Limite de uso de memória alcançado"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "Formato de arquivo não reconhecido"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Opções sem suporte"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Os dados comprimidos estão corrompidos"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Fim da entrada inesperado"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB de memória é necessário. O limitador está desabilitado."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB de memória é necessário. O limite é %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Cadeia de filtros: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Tente \"%s --help\" para mais informações."
#: src/xz/message.c:1093
#, 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:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Argumentos obrigatórios para opções longas também o são para opções curtas.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " Modo de operação:\n"
#: src/xz/message.c:1107
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:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Modificadores de opções:\n"
#: 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 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:1122
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: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"
" --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:1134
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:1136
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:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check não faz a verificação de integridade ao descomprimir"
#: src/xz/message.c:1145
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:1149
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: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 ""
" -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: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 ""
" --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:1162
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: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 ""
" --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: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"
" 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:1179
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:1185
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: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"
" 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:1209
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:1221
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:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Outras opções:\n"
#: src/xz/message.c:1232
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:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn faz os avisos não afetarem o status de saída"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot usa mensagens analisáveis por máquina (útil p/ scripts)"
#: src/xz/message.c:1242
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: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 exibe a ajuda curto (lista apenas as opções básicas)\n"
" -H, --long-help exibe essa ajuda longa e sai"
#: src/xz/message.c:1249
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:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version exibe o número de versão e sai"
#: src/xz/message.c:1256
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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Relate erros para <%s> (em inglês ou finlandês).\n"
"Relate erros de tradução para <https://translationproject.org/team/pt_BR.html>.\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Site do %s: <%s>\n"
#: src/xz/message.c:1268
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=%<PRIu32>"
msgstr "O localizador de correspondência selecionado requer pelo menos nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Com --format=raw, --suffix=.SUF é exigido, a menos que esteja escrevendo para stdout"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: O nome de arquivo tem um sufixo desconhecido, ignorando"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "O valor da opção \"%s\" deve estar no intervalo [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Nome de arquivo vazio, ignorando"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "Dados comprimidos não podem ser lidos de um terminal"
#: src/xz/util.c:294
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:40
msgid "Writing to standard output failed"
msgstr "A escrita para a saída padrão falhou"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Erro desconhecido"
#~ 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"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Sandbox foi habilitado com sucesso"

1016
po/ro.po Normal file

File diff suppressed because it is too large Load Diff

987
po/sr.po Normal file
View File

@ -0,0 +1,987 @@
# Serbian translation of xz.
# This file is put in the public domain.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 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: 2022-06-24 22:07+0800\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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 "Коришћење претподешавања у сировом режиму је обесхрабрујуће."
#: 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 %<PRIu32> threads."
msgstr "Користим до %<PRIu32> нити."
#: 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 на %s да се неби прекорачило ограничење коришћења меморије од %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:224
msgid "Failed to enable the sandbox"
msgstr "Нисам успео да укључим безбедно окружење"
#: src/xz/file_io.c:266
#, 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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Изгледа да је датотека премештена, не уклањам"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Не могу да уклоним: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Не могу да поставим власника датотеке: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Не могу да поставим групу датотеке: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Не могу да поставим овлашћења датотеке: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Грешка добављања заставица стања датотеке са стандардног улаза: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Јесте симболичка веза прескачем"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Јесте директоријум, прескачем"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Није обична датотека, прескачем"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Датотека има постављен „setuid“ или „setgid“ бит, прескачем"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Датотека има постављен лепљиви бит, прескачем"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Улазна датотека има више од једне чврсте везе, прескачем"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Грешка повраћаја заставица стања на стандардни улаз: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Грешка добављања заставица стања датотеке са стандардног излаза: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Грешка повраћаја заставице „O_APPEND“ на стандардни излаз: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Затварање датотеке није успело: %s"
#: 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: Премотавање није успело приликом покушаја прављења оскудне датотеке: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Грешка читања: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Грешка приликом претраге датотеке: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Неочекиван крај датотеке"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Грешка писања: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Искључено"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Укупна количина физичке меморије (RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Ограничење коришћења меморије за запакивање: "
#: src/xz/hardware.c:160
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 " ВреднПров %*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 помагала: %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"
msgstr[1] "%s датотеке\n"
msgstr[2] "%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:728
#, c-format
msgid "%s: "
msgstr "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "Унутрашња грешка (бубица)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "Не могу да успоставим руковаоце сигналом"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "Нема провере целовитости; не проверавам целовитост датотеке"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Неподржана врста провере целовитости; не проверавам целовитост датотеке"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Ограничење коришћења меморије је достигнуто"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "Није препознат формат датотеке"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Неподржане опције"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Запаковани подаци су оштећени"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Неочекиван крај улаза"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB меморије је потребно. Ограничавач је онемогућен."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB меморије је потребно. Ограничење је %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Ланац филтера: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Пробајте „%s --help“ за више података."
#: src/xz/message.c:1093
#, 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:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Обавезни аргументи за дуге опције су такође обавезни и за кратке опције.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " Режим рада:\n"
#: src/xz/message.c:1107
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:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Измењивачи рада:\n"
#: 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 задржава (не брише) улазне датотеке\n"
" -f, --force приморава преписивање излазне датотеке и веза\n"
" (рас)запакивања\n"
" -c, --stdout пише на стандардни излаз и не брише улазне датотеке"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream распакује само први ток, и тихо\n"
" занемарује могуће преостале улазне податке"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse не ствара оскудне датотеке приликом распакивања\n"
" -S, --suffix=.СУФ користи суфикс „.СУФ“ на запакованим датотекама\n"
" --files[=ДТТКА] чита називе датотека за обраду из ДАТОТЕКЕ; ако је\n"
" ДАТОТЕКА изостављено, називи датотека се читају са\n"
" стандардног улаза називи датотека се морају\n"
" завршавати знаком новог реда\n"
" --files0[=ДТТКА] као „--files“ али користи празан знак као завршни"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Основне опције формата датотеке и запакивања:\n"
#: 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"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'"
msgstr ""
" -F, --format=ФМТ формат датотеке за кодирање и декодирање; могуће\n"
" вредности су „auto“ (основно), „xz“, „lzma“,\n"
" и „raw“\n"
" -C, --check=ПРОВЕРА врста провере целовитости: „none“ (користите уз\n"
" опрез), „crc32“, „crc64“ (основно), или „sha256“"
#: src/xz/message.c:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
" --ignore-check не потврђује проверу целовитости приликом\n"
" распакивања"
#: 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!"
msgstr ""
" -0 ... -9 претподешавање запакивања; основно је 6; узмите у\n"
" обзир коришћење меморије запакивања *и* распакивања\n"
" пре него ли употребите 7-9!"
#: src/xz/message.c:1149
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
" -e, --extreme покушава да побољша однос запакивања користећи више\n"
" времена процесора; не утиче на потребе меморије\n"
" распакивача"
#: 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 ""
" -T, --threads=БР користи највише БР нити; основно је 1; поставите\n"
" на 0 за коришћење онолико нити колико има\n"
" процесорских језгара"
#: 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 ""
" --block-size=ВЕЛИЧИНА\n"
" започиње нови „.xz“ блок након свака ВЕЛИЧИНА\n"
" бајта улаза; користите ово да поставите величину\n"
" блока за нитирано запакивање"
#: 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 ""
" --block-list=ВЕЛИЧИНА\n"
" започиње нови „.xz“ блок након датих зарезом\n"
" раздвојених периода незапакованих података"
#: 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 ""
" --flush-timeout=ВРЕМЕСТЕКА\n"
" приликом запакивања, ако је прошло више од\n"
" ВРЕМЕСТЕКА милисекунди до претходног убацивања и\n"
" читања још улаза блокираће, сви подаци на чекању се\n"
" истискују ван"
#: 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"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr ""
" --memlimit-compress=ОГРАНИЧЕЊЕ\n"
" --memlimit-decompress=ОГРАНИЧЕЊЕ\n"
" -M, --memlimit=ОГРАНИЧЕЊЕ\n"
" поставља ограничење коришћења меморије за\n"
" запакивање, распакивање, или оба; ОГРАНИЧЕЊЕ је у\n"
" бајтовима, % o РАМ, или 0 за основно"
#: 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"
msgstr ""
" --no-adjust ако подешавања запакивања пређу ограничење\n"
" коришћења меморије, даје грешку уместо дотеривања\n"
" подешавања"
#: src/xz/message.c:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Произвољни ланац филтера за запакивање (алтернатива за коришћење\n"
" претподешавања):"
#: 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"
" 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"
" вредности; основно):\n"
" preset=ПРЕ враћа опције на претподешавање (0-9[e])\n"
" dict=БРОЈ величина речника (4KiB 1536MiB; 8MiB)\n"
" lc=БРОЈ број битова дословног контекста (0-4; 3)\n"
" lp=БРОЈ број битова дословног положаја (0-4; 0)\n"
" pb=БРОЈ број битова положаја (0-4; 2)\n"
" mode=РЕЖИМ режим запакивања (брзо, обично; обично)\n"
" nice=БРОЈ фина дужина поклапања (2-273; 64)\n"
" mf=НАЗИВ налазач поклапања (hc3, hc4, bt2, bt3,\n"
" bt4; bt4)\n"
" depth=БРОЈ највећа дубина тражења; 0=самостално\n"
" (основно)"
#: src/xz/message.c:1209
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"
" Исправне ОПЦИЈЕ за све „BCJ“ филтере:\n"
" start=БРОЈ померај почетка за претварања\n"
" (основно=0)"
#: src/xz/message.c:1221
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"
" основно):\n"
" dist=БРОЈ растојање између бајтова који су\n"
" одузети из свих других (1-256; 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Остале опције:\n"
#: src/xz/message.c:1232
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"
" грешке такође\n"
" -v, --verbose бива опширан; наведите два пута за још опширније"
#: src/xz/message.c:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn чини да упозорења не делују на стање излаза"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot користи поруке обрадиве рачунаром\n"
" (корисно за скрипте)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory приказује укупан износ РАМ-а и тренутно активна\n"
" ограничења коришћења меморије, и излази"
#: 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 приказује кратку помоћ (исписује само основне\n"
" опције)\n"
" -H, --long-help приказује ову дугу помоћ и излази"
#: 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 приказује ову кратку помоћ и излази\n"
" -H, --long-help приказује дугу помоћ (исписује такође и напредне\n"
" опције)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version приказује број издања и излази"
#: src/xz/message.c:1256
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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Грешке пријавите на <%s> (на енглеском или финском).\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "„%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"
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=%<PRIu32>"
msgstr "Изабрани налазач поклапања захтева барем „nice=%<PRIu32>“"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Са „--format=raw“, „--suffix=.SUF“ је потребно осим ако пише на стандардни излаз"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Назив датотеке има непознат суфикс, прескачем"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "Вредност опције „%s“ мора бити у опсегу [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Празан назив датотеке, прескачем"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "Запаковани подаци се не могу читати из терминала"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "Запаковани подаци се не могу писати на терминал"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "Писање на стандардни излаз није успело"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Непозната грешка"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Безбедно окружење је искључено услед несагласних аргумената линије наредби"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Безбедно окружење је успешно укључено"

983
po/sv.po Normal file
View File

@ -0,0 +1,983 @@
# Swedish messages for xz.
# This file is put in the public domain.
# Sebastian Rasmussen <sebras@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: 2022-06-24 22:18+0800\n"
"PO-Revision-Date: 2022-06-28 20:40+0800\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\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.1\n"
#: src/xz/args.c:63
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Ogiltigt argument till --block-list"
#: src/xz/args.c:73
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: För många argument till --block-list"
#: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list"
msgstr "0 kan endast användas som det sista elementet i --block-list"
#: src/xz/args.c:406
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Okänd filformatstyp"
#: src/xz/args.c:429 src/xz/args.c:437
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Integritetskontrolltyp stöds inte"
#: src/xz/args.c:473
msgid "Only one file can be specified with `--files' or `--files0'."
msgstr "Endast en fil kan anges med ”--files” eller ”--files0”."
#: src/xz/args.c:541
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Miljövariabeln %s innehåller för många argument"
#: src/xz/args.c:643
msgid "Compression support was disabled at build time"
msgstr "Komprimeringsstöd inaktiverades vid byggtid"
#: src/xz/args.c:650
msgid "Decompression support was disabled at build time"
msgstr "Dekomprimeringsstöd inaktiverades vid byggtid"
#: src/xz/coder.c:110
msgid "Maximum number of filters is four"
msgstr "Maximalt antal filter är fyra"
#: src/xz/coder.c:129
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Begränsning av minnesanvändning är allt för låg för den angivna filteruppsättningen."
#: src/xz/coder.c:159
msgid "Using a preset in raw mode is discouraged."
msgstr "Det avråds från att använda en förinställning i rått läge."
#: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions."
msgstr "De exakta flaggorna för förinställningar kan variera mellan programversioner."
#: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Formatet .lzma har endast stöd för LZMA1-filtret"
#: src/xz/coder.c:192
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 kan inte användas tillsammas med .xz-formatet"
#: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout"
msgstr "Filterkedjan är inkompatibel med --flush-timeout"
#: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Växlar till en-trådsläge på grund av --flush-timeout"
#: src/xz/coder.c:235
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Använder upp till %<PRIu32> trådar."
#: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options"
msgstr "Filterkedja eller filterflaggor stöds inte"
#: src/xz/coder.c:263
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekomprimering kommer att kräva %s MiB minne."
#: 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 "Justerade antalet trådar från %s till %s för att inte överstiga begränsningen av minnesanvändning 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 "Justerade storlek för LZMA%c-lexikon från %s MiB till %s MiB för att inte överstiga begränsningen av minnesanvändning på %s MiB"
#: src/xz/file_io.c:110 src/xz/file_io.c:118
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Fel vid skapande av rörledning: %s"
#: src/xz/file_io.c:224
msgid "Failed to enable the sandbox"
msgstr "Misslyckades med att aktivera sandlådan"
#: src/xz/file_io.c:266
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() misslyckades: %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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: File verkar har flyttats, tar inte bort"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Kan inte ta bort: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Kan inte sätta filägaren: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Kan inte sätta filgruppen: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Kan inte sätta filrättigheterna: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Fel vid hämtning av filstatusflaggor från standard in: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Är en symbolisk länk, hoppar över"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Är en katalog, hoppar över"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Är inte en vanlig fil, hoppar över"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Filen har setuid- eller setgid-biten satt, hoppar över"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Filen har stickybiten satt, hoppar över"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Indatafilten har mer en än en hårdlänk, hoppar över"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Fel vid återställning av statusflaggorna för standard in: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Fel vid hämtning av filstatusflaggorna från standard ut: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Fel vid återställning av O_APPEND-flaggand till standard ut: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Stänging av filen misslyckades: %s"
#: 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: Sökning misslyckades vid skapande av gles fil: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Läsfel: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Fel vid sökning i fil: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Oväntat filslut"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Skrivfel: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Inaktiverad"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Totalt mängd fysiskt minne (RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Begränsning av minnesanvändning för komprimering: "
#: src/xz/hardware.c:160
msgid "Memory usage limit for decompression: "
msgstr "Begränsning av minnesanvändning för 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 "Okänd-2"
#: src/xz/list.c:73
msgid "Unknown-3"
msgstr "Okänd-3"
#: src/xz/list.c:75
msgid "Unknown-5"
msgstr "Okänd-5"
#: src/xz/list.c:76
msgid "Unknown-6"
msgstr "Okänd-6"
#: src/xz/list.c:77
msgid "Unknown-7"
msgstr "Okänd-7"
#: src/xz/list.c:78
msgid "Unknown-8"
msgstr "Okänd-8"
#: src/xz/list.c:79
msgid "Unknown-9"
msgstr "Okänd-9"
#: src/xz/list.c:81
msgid "Unknown-11"
msgstr "Okänd-11"
#: src/xz/list.c:82
msgid "Unknown-12"
msgstr "Okänd-12"
#: src/xz/list.c:83
msgid "Unknown-13"
msgstr "Okänd-13"
#: src/xz/list.c:84
msgid "Unknown-14"
msgstr "Okänd-14"
#: src/xz/list.c:85
msgid "Unknown-15"
msgstr "Okänd-15"
#: src/xz/list.c:153
#, c-format
msgid "%s: File is empty"
msgstr "%s: Fil är tom"
#: src/xz/list.c:158
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: För lite för att vara en giltig 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 "Strmr Block Komprimerd Okomprimerd Förh. Kntrll Filnamn"
#: src/xz/list.c:717
#, c-format
msgid " Streams: %s\n"
msgstr " Strömmar: %s\n"
#: src/xz/list.c:719
#, c-format
msgid " Blocks: %s\n"
msgstr " Block: %s\n"
#: src/xz/list.c:721
#, c-format
msgid " Compressed size: %s\n"
msgstr " Komprimerad storlek: %s\n"
#: src/xz/list.c:724
#, c-format
msgid " Uncompressed size: %s\n"
msgstr " Okomprimerad storlek: %s\n"
#: src/xz/list.c:727
#, c-format
msgid " Ratio: %s\n"
msgstr " Förhållande: %s\n"
#: src/xz/list.c:729
#, c-format
msgid " Check: %s\n"
msgstr " Kontroll: %s\n"
#: src/xz/list.c:730
#, c-format
msgid " Stream padding: %s\n"
msgstr " Strömfyllnad: %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ömmar:\n"
" Ström Block KompPos OkompPos KompStrl OkompStrl Förh. Kontroll Fyllnad"
#. 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 ""
" Block:\n"
" Ström Block KompPos OkompPos TotalStrl OkompStrl Förh. Kontroll"
#. 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 " KntrlVär %*s Huvud Flaggor KompStrl Minne Filter"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Minnesom behövs: %s MiB\n"
#: src/xz/list.c:905 src/xz/list.c:1080
#, c-format
msgid " Sizes in headers: %s\n"
msgstr " Storlek i huvuden: %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 " Minsta 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 "Total:"
#: 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 "--list fungerar endast med .xz-filer (--format=xz eller --format=auto)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input"
msgstr "--list saknar stöd för att läsa från standard in"
#: src/xz/main.c:89
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Fel vid läsning av filnamn: %s"
#: src/xz/main.c:96
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Oväntat slut av indata vid läsning av filnamn"
#: 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-tecken hittat vid läsning av filnamn; kanske du menade att använda ”--files0” istället för ”--files”?"
#: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Komprimering och dekomprimering med --robot stöds inte än."
#: src/xz/main.c:252
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Kan inte läsa data från standard in när filnamn läses från standard in"
#. 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 "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "Internt fel"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "Kan inte etablera signalhanterarer"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "Ingen integritetskontroll; kan inte verifiera filintegritet"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Typ av integritetskontroll stöds inte; verifierar inte filtegritet"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Begränsning av minnesanvändning uppnådd"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "Filformat okänt"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Flaggor stöds inte"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Komprimerad data är korrupt"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Oväntat avslut av indata"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB minne krävs. Begränsaren inaktiverad."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB minne krävs. Begränsningen är %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filterkedja: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Prova ”%s --help” för vidare information."
#: src/xz/message.c:1093
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
"Användning: %s [FLAGGA]… [FIL]…\n"
"Komprimera eller dekomprimera FILer i .xz-formatet.\n"
"\n"
#: src/xz/message.c:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Nödvändiga argument till långa flaggor är också nödvändiga för korta flaggor.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " Operationsläge:\n"
#: src/xz/message.c:1107
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 tvinga komprimering\n"
" -d, --decompress tvinga dekomprimering\n"
" -t, --test testa integritet för komprimerad file\n"
" -l, --list lista information om .xz-filer"
#: src/xz/message.c:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Operation-modifierare:\n"
#: 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 behåll (ta inte bort) indatafiler\n"
" -f, --force tvinga överskrivning av utdatafil och (de)komprimerad\n"
" länkar\n"
" -c, --stdout skriv till standard ut och ta inte bort indatafiler"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream dekomprimera endas den första strömmen och hoppa\n"
" tyst över eventuellt återstående indata"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse skapa inte glesa filer vid dekomprimering\n"
" -S, --suffix=.SUF använd ändelse ”.SUF” för komprimerade filer\n"
" --files[=FIL] läs filnamn från FIL; om FIL utelämnas\n"
" kommer filnamn att läsas från standard in;\n"
" filnamn måste avslutas med nyradstecken\n"
" --files0[=FIL] som --files men null-tecknet måste användas"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Grundläggande filformat och komprimeringsflaggor:\n"
#: 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"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'"
msgstr ""
" -F, --format=FMT filformat att koda eller avkoda; möjliga värden är\n"
" ”auto” (standard), ”xz”, ”lzma”, och ”raw”\n"
" -C, --check=CHECK typ av integritetskontroll: ”none” (använd med\n"
" försiktighet), ”crc32”, ”crc64” (standard),\n"
" eller ”sha256”"
#: src/xz/message.c:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check verifiera inte integritet vid dekomprimering"
#: 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!"
msgstr ""
" -0 ... -9 kompressionsförinställning; standard är 6; ta\n"
" minnesanvändning för komprimerare *och* dekomprimerare\n"
" i beaktning innan du använder 7-9!"
#: src/xz/message.c:1149
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
" -e, --extreme försök att förbättra komprimeringsförhållande genom att\n"
" använda mer CPU-tid; påverkar inte minnesanvändning för\n"
" dekomprimerare"
#: 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 ""
" -T, --threads=NUM använd som mest NUM trådar; standard är 1; sätt till 0\n"
" för att använda så många trådar som det finns\n"
" processorkärnor"
#: 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 ""
" --block-size=STORLEK\n"
" påbörja ett nytt .xz-block efter SIZE byte indata;\n"
" använd detta för att sätt blockstorleken för trådad\n"
" komprimering"
#: 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 ""
" --block-list=STORLEKAR\n"
" påbörja ett nytt .xz-block efter de angivna\n"
" komma-separerade intervallen av okomprimerad data"
#: 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 ""
" --flush-timeout=TIDSGRÄNS\n"
" vid komprimering, om mer än TIDSGRÄNS millisekunder har\n"
" passerat sedan den föregående spolningen och läsning av\n"
" mer indata skulle blockera, så kommer all väntande data\n"
" att spolas ut"
#: 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"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr ""
" --memlimit-compress=BEGR\n"
" --memlimit-decompress=BEGR\n"
" -M, --memlimit=BEGR\n"
" sätt begränsning av minnesanvändning för komprimering,\n"
" dekomprimering, eller båda; BEGR uttrycks i byte, % RAM,\n"
" eller 0 för standardvärden"
#: 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"
msgstr ""
" --no-adjust om komprimeringsinställningar överstiger begräningen av\n"
" minnesanvändning, ge ett fel iställt för att justera ner\n"
" inställningarna"
#: src/xz/message.c:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Anpassad filterkedja för komprimering (alternativ till att använda\n"
" förinställningar):"
#: 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"
" 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[=FLAGGOR] LZMA1 elleror LZMA2; FLAGGOR är en kommaseparerad lista\n"
" av noll eller\n"
" --lzma2[=FLAGGOR] fler av följande flaggor (giltiga värden; standrd):\n"
" preset=FÖR återställ flaggor till en förinställning\n"
" (0-9[e])\n"
" dict=NUM lexikonstorlek (4KiB - 1536MiB; 8MiB)\n"
" lc=NUM antal bitar för bokstavligkontext (0-4; 3)\n"
" lp=NUM antal bitar för bokstavligposition (0-4; 0)\n"
" pb=NUM antal bitar för position (0-4; 2)\n"
" mode=LÄGE komprimeringsläge (fast, normal; normal)\n"
" nice=NUM bra längd för en matchning (2-273; 64)\n"
" mf=NAMN matchningshittare (hc3, hc4, bt2, bt3,\n"
" bt4; bt4)\n"
" depth=NUM maximalt sökdjup; 0=automatisk (standard)"
#: src/xz/message.c:1209
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[=FLAGGOR] x86 BCJ-filter (32- och 64-bitar)\n"
" --powerpc[=FLAGGOR] PowerPC BCJ-filter (endast rak byteordning)\n"
" --ia64[=FLAGGOR] IA-64 (Itanium) BCJ-filter\n"
" --arm[=FLAGGOR] ARM BCJ-filter (endast omvänd byteordning)\n"
" --armthumb[=FLAGGOR] ARM-Thumb BCJ-filter (endas omvänd byteordning)\n"
" --sparc[=FLAGGOR] SPARC BCJ-filter\n"
" Giltiga FLAGGOR för alla BCJ-filter:\n"
" start=NUM startposition för konverteringar (standard=0)"
#: src/xz/message.c:1221
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[=FLAGGOR] Deltafilter; giltiga FLAGGOR (giltiga värden; standard):\n"
" dist=NUM avstånd mellan byte som subtraheras från\n"
" varandra (1-256; 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Andra flaggor:\n"
#: src/xz/message.c:1232
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 undertryck varningar; ange två gånger för att också\n"
" undertrycka fel\n"
" -v, --verbose var utförlig; ange två gången för än mer utförlig"
#: src/xz/message.c:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn låt inte varningar påverka avslutningsstatus"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot använd maskintolkningsbara meddelanden\n"
" (användbara för skript)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory visa den totala mängden RAM och den för närvarande aktiva\n"
" begräningen av minnesanvändning och avsluta"
#: 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 visa den korta hjälpen (listar endast de grundläggande\n"
" flaggorna)\n"
" -H, --long-help visar denna långa hjälp av avsluta"
#: 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 visa denna korta hjälp och avsluta\n"
" -H, --long-help visa den långa hjälpen (listar också de avancerade\n"
" flaggorna)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version visa versionsnummret och avsluta"
#: src/xz/message.c:1256
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"Med FIL, eller när FIL är -, läs standard in.\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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Rapportera buggar till <%s> (på engelska eller finska).\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s hemsida: <%s>\n"
#: src/xz/message.c:1268
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "DETTA ÄR EN UTVECKLINGSVERSION SOM INTE ÄR AVSEDD FÖR PRODUKTIONSANVÄNDNING."
#: src/xz/options.c:86
#, c-format
msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "%s: Flaggor måste vara ”namn=värde”-par separerade med kommatecken"
#: src/xz/options.c:93
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Ogiltigt flaggnamn"
#: src/xz/options.c:113
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Ogiltigt flaggvärde"
#: src/xz/options.c:247
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "LZMA1/LZMA2-förinställning stöds inte: %s"
#: src/xz/options.c:355
msgid "The sum of lc and lp must not exceed 4"
msgstr "Summan av lc och lp får inte överstiga 4"
#: src/xz/options.c:359
#, c-format
msgid "The selected match finder requires at least nice=%<PRIu32>"
msgstr "Den valda matchningshittaren kräver åtminstone nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Med --format=raw, krävs --suffix=.SUF om data inte skrivs till standard ut"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Filnamn har okänd filändelse, hoppar över"
#: src/xz/suffix.c:185
#, c-format
msgid "%s: File already has `%s' suffix, skipping"
msgstr "%s: Fil har redan ”%s”-ändelse, hoppar över"
#: src/xz/suffix.c:393
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Ogiltig filnamnsändelse"
#: src/xz/util.c:71
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Värdet är inte ett icke-negativt, decimalt heltal"
#: src/xz/util.c:113
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Ogiltig multipeländelse"
#: src/xz/util.c:115
msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
msgstr "Giltiga ändelser är ”KiB” (2^10), ”MiB” (2^20) och ”GiB” (2^30)."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Värdet för flaggan ”%s” måste vara inom intervallet [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Tomt filnamn, hoppar över"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "Komprimerad data kan inte läsa från en terminal"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "Komprimerad data kan inte skrivas till en terminal"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "Skrivning till standard ut misslyckades"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Okänt fel"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Sandlåda inaktiverad på grund av inkompatibla kommandoradsargument"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Sandlåda aktiverades framgångsrikt"

977
po/tr.po Normal file
View File

@ -0,0 +1,977 @@
# Turkish translation for xz.
# This file is distributed under the same license as the xz package.
# This file is put in the public domain.
#
# Emir SARI <emir_sari@icloud.com>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2022-08-30 02:44+0700\n"
"PO-Revision-Date: 2022-08-27 04:30+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\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"
#: src/xz/args.c:63
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: --block-list için geçersiz argüman"
#: src/xz/args.c:73
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: --block-list için çok fazla argüman"
#: src/xz/args.c:102
msgid "0 can only be used as the last element in --block-list"
msgstr "0, yalnızca --block-list içindeki son öge olarak kullanılabilir"
#: src/xz/args.c:406
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Bilinmeyen dosya biçimi türü"
#: src/xz/args.c:429 src/xz/args.c:437
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Desteklenmeyen bütünlük denetimi türü"
#: src/xz/args.c:473
msgid "Only one file can be specified with `--files' or `--files0'."
msgstr "'--files' veya '--files0' ile yalnızca bir dosya belirtilebilir."
#: src/xz/args.c:541
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Çevre değişkeni %s, pek fazla argüman içeriyor"
#: src/xz/args.c:643
msgid "Compression support was disabled at build time"
msgstr "Sıkıştırma desteği, yapım sırasında devre dışı bırakıldı"
#: src/xz/args.c:650
msgid "Decompression support was disabled at build time"
msgstr "Sıkıştırma açma desteği, yapım sırasında devre dışı bırakıldı"
#: src/xz/coder.c:110
msgid "Maximum number of filters is four"
msgstr "Olabilecek en çok süzgeç sayısı dörttür"
#: src/xz/coder.c:129
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Verilen süzgeç ayarı için bellek kullanım sınırı pek düşük."
#: src/xz/coder.c:159
msgid "Using a preset in raw mode is discouraged."
msgstr "Ham kipte bir önayar kullanımı önerilmez."
#: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions."
msgstr "Önayarların kesin seçenekleri yazılım sürümleri arasında ayrım gösterebilir."
#: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma biçimi, yalnızca LZMA1 süzgecini destekler"
#: src/xz/coder.c:192
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1, .xz biçimi ile birlikte kullanılamaz"
#: src/xz/coder.c:209
msgid "The filter chain is incompatible with --flush-timeout"
msgstr "Süzgeç zinciri, --flush-timeout ile uyumsuz"
#: src/xz/coder.c:215
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "--flush-timeout nedeniyle tek iş parçacıklı kipe geçiliyor"
#: src/xz/coder.c:235
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "En çok %<PRIu32> iş parçacığı kullanılıyor."
#: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options"
msgstr "Desteklenmeyen süzgeç zinciri veya süzgeç seçenekleri"
#: src/xz/coder.c:263
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Sıkıştırma açma, %s MiB belleğe gereksinim duyacak."
#: 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 "%3$s MiB bellek kullanımı sınırını aşmamak için iş parçacığı sayısı %1$s -> %2$s olarak düzenlendi"
#: 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 "%4$s MiB bellek kullanımı sınırını aşmamak için LZMA%1$c sözlük boyutu %2$s MiB'tan %3$s MiB'a ayarlandı"
#: src/xz/file_io.c:110 src/xz/file_io.c:118
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Veriyolu oluştururken hata: %s"
#: src/xz/file_io.c:224
msgid "Failed to enable the sandbox"
msgstr "Kum havuzu etkinleştirilemedi"
#: src/xz/file_io.c:266
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() başarısız oldu: %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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Dosya taşınmış gibi görünüyor, kaldırılmıyor"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Kaldırılamıyor: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Dosya sahibi ayarlanamıyor: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Dosya grubu ayarlanamıyor: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Dosya izinleri ayarlanamıyor: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Standart girdi'den dosya durum bayrakları alınırken hata: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Bir sembolik bağ, atlanıyor"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Bir dizin, atlanıyor"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Olağan bir dosya değil, atlanıyor"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Dosyanın setuid'si veya setgid biti ayarlanmış, atlanıyor"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Dosyanın yapışkan bit seti var, atlanıyor"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Girdi dosyasında birden çok sabit bağ var, atlanıyor"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Standart girdi'ye durum bayrakları geri yüklenirken hata: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Standart çıktı'dan dosya durum bayrakları alınırken hata: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Standart çıktı'dan O_APPEND bayrağı geri yüklenirken hata: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Dosyayı kapatma başarısız: %s"
#: 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: Bir aralıklı dosya oluşturmaya çalışırken arama başarısız: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Okuma hatası: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Dosyayı ararken hata: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Dosyanın beklenmedik sonu"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Yazma hatası: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Devre dışı"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Toplam fiziksel bellek boyutu (RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Sıkıştırma için bellek kullanım sınırı:"
#: src/xz/hardware.c:160
msgid "Memory usage limit for decompression: "
msgstr "Açma için bellek kullanım sınırı: "
#. 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 "Yok"
#. 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: Dosya boş"
#: src/xz/list.c:158
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Geçerli bir .xz dosyası olabilmek için pek küçük"
#. 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 " Akış Blok Sıkıştırıl. Sıkıştırmas. Oran Denetim Dosya ad"
#: src/xz/list.c:717
#, c-format
msgid " Streams: %s\n"
msgstr " Akışlar: %s\n"
#: src/xz/list.c:719
#, c-format
msgid " Blocks: %s\n"
msgstr " Bloklar: %s\n"
#: src/xz/list.c:721
#, c-format
msgid " Compressed size: %s\n"
msgstr " Sıkıştırılmış boyut: %s\n"
#: src/xz/list.c:724
#, c-format
msgid " Uncompressed size: %s\n"
msgstr " Sıkıştırılmamış boyut: %s\n"
#: src/xz/list.c:727
#, c-format
msgid " Ratio: %s\n"
msgstr " Oran: %s\n"
#: src/xz/list.c:729
#, c-format
msgid " Check: %s\n"
msgstr " Denetim: %s\n"
#: src/xz/list.c:730
#, c-format
msgid " Stream padding: %s\n"
msgstr " Akış dolgusu: %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 ""
" Akışlar:\n"
" Akış Bloklar SkştrOfseti SkştrmmşOfset SkştrBoyut SkştrmmşBoyut Oran Denetim Dolgu"
#. 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 ""
" Bloklar:\n"
" Akış Blok SkştrOfseti SkştrmmşOfset ToplamBoyut SkştrmmşBoyut Oran Denetim"
#. 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 " DğrDentm %*s Üstvri Bayrak SkştrBoyut BelKullnm Süzgeçler"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Gereken bellek: %s MiB\n"
#: src/xz/list.c:905 src/xz/list.c:1080
#, c-format
msgid " Sizes in headers: %s\n"
msgstr " Üstverideki boyut: %s\n"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "Yes"
msgstr "Evet"
#: src/xz/list.c:906 src/xz/list.c:1081
msgid "No"
msgstr "Hayır"
#: src/xz/list.c:907 src/xz/list.c:1082
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " En düşük XZ Utils sürümü: %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 dosya\n"
msgstr[1] "%s dosya\n"
#: src/xz/list.c:1070
msgid "Totals:"
msgstr "Toplamlar:"
#: src/xz/list.c:1071
#, c-format
msgid " Number of files: %s\n"
msgstr " Dosya sayısı: %s\n"
#: src/xz/list.c:1146
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list, yalnızca .xz dosyalarında çalışır (--format=xz veya --format=auto)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input"
msgstr "--list, standart girdi'den okumayı desteklemez"
#: src/xz/main.c:89
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Dosya adları okunurken hata: %s"
#: src/xz/main.c:96
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Dosya adları okunurken beklenmedik girdi sonu"
#: 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: Dosya adları okunurken boş karakter bulundu; '--files' yerine '--files0' mı demek istediniz?"
#: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet."
msgstr "--robot ile sıkıştırma ve sıkıştırma açma henüz desteklenmiyor."
#: src/xz/main.c:252
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Standart girdi'den dosya adları okunurken standart girdi'den veri okunamıyor"
#. 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 "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "İç hata (yazılım hatası)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "Sinyal işleyicileri tesis edilemiyor"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "Bütünlülük denetimi yok; dosya bütünlüğü doğrulanmıyor"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Desteklenmeyen bütünlülük denetimi türü; dosya bütünlüğü doğrulanmıyor"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Bellek kullanım sınırına erişildi"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "Dosya biçimi tanımlanamıyor"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Desteklenmeyen seçenekler"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Sıkıştırılmış veri hasarlı"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Beklenmedik girdi sonu"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB bellek gerekiyor. Sınırlandırıcı devre dışı bırakıldı."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB bellek gerekiyor. Sınır, %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Süzgeç zinciri: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Daha fazla bilgi için '%s --help' deneyin."
#: src/xz/message.c:1093
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
"Kullanım: %s [SEÇENEK]... [DOSYA]...\n"
".xz biçimindeki dosyaları sıkıştırın veya sıkıştırmasınıın.\n"
"\n"
#: src/xz/message.c:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de geçerlidir.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " İşlem kipi:\n"
#: src/xz/message.c:1107
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 sıkıştırmayı zorla\n"
" -d, --decompress sıkıştırma açmayı zorla\n"
" -t, --test sıkıştırılmış dosya bütünlüğünü sına\n"
" -l, --list .xz dosyaları hakkında bilgi listele"
#: src/xz/message.c:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" İşlem değiştiricileri:\n"
#: 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 girdi dosyalarını tut (silme)\n"
" -f, --force çıktı dosyası üzerine yazmayı zorla ve bağlantıları\n"
" sıkıştır/sıkıştırmayı aç\n"
" -c, --stdout standart çıktıya yaz ve girdi dosyalarını silme"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream yalnızca ilk akışın sıkıştırmasını aç ve sessizce\n"
" kalan girdi verisini yok say"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse sıkıştırma açarken aralıklı dosyalar oluşturma\n"
" -S, --suffix=.SUF sıkıştırılmış dosyalarda `.SUF' sonekini kullan\n"
" --files[=DOSYA] DOSYA'dan işlemek için dosya adlarını oku; DOSYA\n"
" atlanırsa dosya adları standart girdi'den okunur;\n"
" dosya adları, yenisatır karakteri ile sonlanmalıdır\n"
" --files0[=DSYA] --files gibi; ancak sonlandırıcı olarak null karakteri\n"
" kullan"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Temel dosya biçimi ve sıkıştırma seçenekleri:\n"
#: 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"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'"
msgstr ""
" -F, --format=BÇM kodlanacak veya kodu çözülecek dosya biçimi; olası\n"
" değerler: `auto' (öntanımlı), `xz', `lzma' ve `raw'\n"
" -C, --check=DNTLE bütünlük denetimi türü: `none' (dikkatlu kullanın),\n"
" `crc32', `crc64' (öntanımlı) veya `sha256'"
#: src/xz/message.c:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check sıkıştırma açarken bütünlük denetimini doğrulama"
#: 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!"
msgstr ""
" -0 ... -9 sıkıştırma önayarı; öntanımlı 6; 7-9 kullanmadan önce\n"
" sıkıştırma açıcı bellek kullanımını hesaba katın!"
#: src/xz/message.c:1149
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
" -e, --extreme daha çok CPU zamanı kullanarak sıkıştırma oranını\n"
" iyileştirmeye çalış; sıkıştırma açıcı bellek\n"
" gereksinimlerini etkilemez"
#: 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 ""
" -T, --threads=SAYI en çok SAYI iş parçacığı kullan; öntanımlı 1; var olan\n"
" işlemci çekirdeği kadar iş parçacığı kullanmak için\n"
" 0'a ayarlayın"
#: 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 ""
" --block-size=BOYUT\n"
" her BOYUT bayt girdiden sonra yeni bir .xz bloku başlat;\n"
" iş parçacığı kullanan sıkıştırma için blok boyutunu\n"
" ayarlamak için bunu kullanın"
#: 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 ""
" --block-list=BOYUTLAR\n"
" sıkıştırılmamış verinin virgülle ayrılmış verilen\n"
" aralıklarından sonra yeni bir .xz bloku başlat"
#: 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 ""
" --flush-timeout=ZAMANAŞIMI\n"
" sıkıştırırken, bir önceki floştan bu yana ZAMANAŞIMI\n"
" milisaniye geçmişse ve daha çok girdi okuma bloklarsa\n"
" tüm bekleyen veri floşlanır"
#: 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"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr ""
" --memlimit-compress=LİMİT\n"
" --memlimit-decompress=LİMİT\n"
" -M, --memlimit=LİMİT\n"
" sıkıştırma, sıkıştırma açma veya her ikisi için bellek\n"
" kullanımı limitini ayarla; LİMİT, bayt, RAM % veya\n"
" öntanımlılar için 0'dır"
#: 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"
msgstr ""
" --no-adjust sıkıştırma ayarları bellek kullanımı limitini aşarsa\n"
" ayarı aşağı doğru düzeltmek yerine bir hata ver"
#: src/xz/message.c:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Sıkıştırma için özel süzgeç zinciri (önayar kullanımı alternatifi):"
#: 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"
" 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[=SÇNKLR] LZMA1 veya LZMA2; OPTS, sıfır veya aşağıdaki\n"
" --lzma2[=SÇNKLR] seçeneklerin virgülle ayrılmış değerleridir (geçerli\n"
" değerler; öntanımlı):\n"
" preset=ÖNA seçenekleri bir önayara sıfırla (0-9[e])\n"
" dict=NUM sözlük boyutu (4KiB - 1536MiB; 8MiB)\n"
" lc=NUM düz bağlam bitlerinin sayısı (0-4; 3)\n"
" lp=NUM düz konum bitlerinin sayısı (0-4; 0)\n"
" pb=NUM konum bitlerinin sayısı (0-4; 2)\n"
" mode=KİP sıkıştırma kipi (fast, normal; normal)\n"
" nice=NUM bir eşleşmenin öncelik uzunluğu (2-273; 64)\n"
" mf=AD eşleşme bul (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=NUM en büyük arama derinliği; 0=oto (öntanımlı)"
#: src/xz/message.c:1209
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[=SÇNKLR] x86 BCJ süzgeci (32 bit ve 64 bit)\n"
" --powerpc[=SÇNKLR] PowerPC BCJ süzgeci (yalnızca yüksek son basamaklı)\n"
" --ia64[=SÇNKLR] IA-64 (Itanium) BCJ süzgeci\n"
" --arm[=SÇNKLR] ARM BCJ süzgeci (yalnızca düşük son basamaklı)\n"
" --armthumb[=SÇNKLR] ARM-Thumb BCJ süzgeci (yalnızca düşük son basamaklı)\n"
" --sparc[=SÇNKLR] SPARC BCJ süzgeci\n"
" Tüm BCJ süzgeçleri için geçerli SÇNKLR:\n"
" start=NUM dönüşümler başlangıç ofseti (öntanımlı=0)"
#: src/xz/message.c:1221
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[=SÇNKLR] Delta süzgeci; geçerli SÇNKLR (geçerli değerler;\n"
" öntanımlı):\n"
" dist=NUM birbirinden çırakılar baytlar arasındaki\n"
" uzaklık (1-256; 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Diğer seçenekler:\n"
#: src/xz/message.c:1232
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 uyarıları sustur; hataları da susturmak için iki kez\n"
" belirt\n"
" -v, --verbose ayrıntılı ol; daha da çok ayrıntı için iki kez belirt"
#: src/xz/message.c:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn uyarıların çıkış durumunu etkilemesine izin verme"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot makine-ayrıştırılabilir iletiler kullan (betikler için\n"
" yararlı)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory toplam RAM miktarını ve şu anki bellek kullanımı\n"
" limitlerini görüntüle ve çık"
#: 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 kısa yardımı görüntüle (temel seçenekleri listeler)\n"
" -H, --long-help bu uzun yardımı görüntüle ve çık"
#: 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 bu kısa yardımı görüntüle ve çık\n"
" -H, --long-help uzun yardımı görüntüle (gelişmiş seçenekleri listeler)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version sürüm numarasını görüntüle ve çık"
#: src/xz/message.c:1256
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"DSYA olmadan veya DSYA - iken standart girdi'yi oku.\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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Hataları <%s> adresine bildirin (İngilizce veya Fince).\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s ana sayfası: <%s>\n"
#: src/xz/message.c:1268
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "BU, NORMAL KULLANIM İÇİN OLMAYAN BİR GELİŞTİRME SÜRÜMÜDÜR."
#: src/xz/options.c:86
#, c-format
msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "%s: Seçenekler, virgülle ayrılmış 'ad=değer' çiftleri olmalıdır"
#: src/xz/options.c:93
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Geçersiz seçenek adı"
#: src/xz/options.c:113
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Geçersiz seçenek değeri"
#: src/xz/options.c:247
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Desteklenmeyen LZMA1/LZMA2 önayarı: %s"
#: src/xz/options.c:355
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc ve lp'nin toplamı 4'ü geçmemelidir"
#: src/xz/options.c:359
#, c-format
msgid "The selected match finder requires at least nice=%<PRIu32>"
msgstr "Seçili eşleşme bulucusu en azından nice=%<PRIu32> gerektirir"
#: 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 ile, stdout'a yazılmıyorsa --suffix=.SUF gereklidir"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Dosya adında bilinmeyen sonek var, atlanıyor"
#: src/xz/suffix.c:185
#, c-format
msgid "%s: File already has `%s' suffix, skipping"
msgstr "%s: Dosyada '%s' soneki halihazırda var, atlanıyor"
#: src/xz/suffix.c:393
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Geçersiz dosya adı soneki"
#: src/xz/util.c:71
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Değer, bir negatif olmayan ondalık tamsayı"
#: src/xz/util.c:113
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Geçersiz çoklayıcı soneki"
#: src/xz/util.c:115
msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
msgstr "Geçerli sonekler: 'KiB' (2^10), 'MiB' (2^20) ve 'GiB' (2^30)."
#: src/xz/util.c:132
#, c-format
msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "'%s' seçeneği değeri erimde olmalıdır [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Boş dosya adı, atlanıyor"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "Bir uçbirimden sıkıştırılmış veri okunamaz"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "Bir uçbirime sıkıştırılmış veri yazılamaz"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "Standart çıktı'ya yazma başarısız"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Bilinmeyen hata"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Uyumsuz komut satırı argümanları nedeniyle kum havuzu devre dışı bırakıldı"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Kum havuzu başarıyla etkinleştirildi"

996
po/uk.po Normal file
View File

@ -0,0 +1,996 @@
# Ukrainian translation for xz.
# This file is put in the public domain.
#
# Yuri Chornoivan <yurchor@ukr.net>, 2019.
msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
"POT-Creation-Date: 2022-06-24 22:18+0800\n"
"PO-Revision-Date: 2022-06-28 23:18+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 19.03.70\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 "Не варто користуватися визначенням рівня у режимі без обробки."
#: 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 %<PRIu32> threads."
msgstr "Використовуємо до %<PRIu32> потоків обробки."
#: 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 МіБ пам'яті."
#: 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 МіБ"
#: 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 МіБ до %s МіБ, щоб не перевищувати обмеження на використання пам'яті у %s МіБ"
#: 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:224
msgid "Failed to enable the sandbox"
msgstr "Не вдалося увімкнути пісочницю"
#: src/xz/file_io.c:266
#, 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:333
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: здається, файл пересунуто; не вилучаємо"
#: src/xz/file_io.c:340 src/xz/file_io.c:882
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: не вдалося вилучити: %s"
#: src/xz/file_io.c:366
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: не вдалося встановити власника файла: %s"
#: src/xz/file_io.c:372
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: не вдалося встановити групу власника файла: %s"
#: src/xz/file_io.c:391
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: не вдалося встановити права доступу до файла: %s"
#: src/xz/file_io.c:517
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Помилка під час спроби отримання прапорців стану файла зі стандартного джерела вхідних даних: %s"
#: src/xz/file_io.c:574 src/xz/file_io.c:636
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: є символічним посиланням; пропускаємо"
#: src/xz/file_io.c:665
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: є каталогом; пропускаємо"
#: src/xz/file_io.c:671
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: не є звичайним файлом; пропускаємо"
#: src/xz/file_io.c:688
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: для файла встановлено біт setuid або setgid; пропускаємо"
#: src/xz/file_io.c:695
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: для файла встановлено липкий біт; пропускаємо"
#: src/xz/file_io.c:702
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: виявлено декілька жорстких посилань на файл із вхідними даними; пропускаємо"
#: src/xz/file_io.c:792
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Помилка під час спроби відновлення прапорців стану для стандартного джерела вхідних даних: %s"
#: src/xz/file_io.c:840
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Помилка під час спроби отримання прапорців стану файла зі стандартного виведення: %s"
#: src/xz/file_io.c:1018
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Помилка під час спроби відновлення прапорця O_APPEND для стандартного виведення: %s"
#: src/xz/file_io.c:1030
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: не вдалося закрити файл: %s"
#: 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: помилка позиціювання під час спроби створити розріджений файл: %s"
#: src/xz/file_io.c:1167
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: помилка читання: %s"
#: src/xz/file_io.c:1191
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: помилка позиціювання у файлі: %s"
#: src/xz/file_io.c:1201
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: неочікуваний кінець файла"
#: src/xz/file_io.c:1260
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: помилка під час спроби запису: %s"
#: src/xz/hardware.c:137
msgid "Disabled"
msgstr "Вимкнено"
#. TRANSLATORS: Test with "xz --info-memory" to see if
#. the alignment looks nice.
#: src/xz/hardware.c:156
msgid "Total amount of physical memory (RAM): "
msgstr "Загальний обсяг фізичної пам'яті (RAM): "
#: src/xz/hardware.c:158
msgid "Memory usage limit for compression: "
msgstr "Обмеження пам'яті для пакування: "
#: src/xz/hardware.c:160
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 " ЗначПер %*s Загол. Прапорці РозмСтисн ВикПам Фільтри"
#: src/xz/list.c:903 src/xz/list.c:1078
#, c-format
msgid " Memory needed: %s MiB\n"
msgstr " Потрібний об'єм пам'яті: %s МіБ\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"
msgstr[1] "%s файли\n"
msgstr[2] "%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 "Читання даних зі стандартного джерела вхідних даних неможливе, якщо зі стандартного джерела даних виконується читання назв файлів 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:728
#, c-format
msgid "%s: "
msgstr "%s: "
#: src/xz/message.c:791 src/xz/message.c:841
msgid "Internal error (bug)"
msgstr "Внутрішня помилка (вада)"
#: src/xz/message.c:798
msgid "Cannot establish signal handlers"
msgstr "Не вдалося встановити обробники сигналів"
#: src/xz/message.c:807
msgid "No integrity check; not verifying file integrity"
msgstr "Немає перевірки цілісності; цілісність файлів перевірено не буде"
#: src/xz/message.c:810
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Непідтримуваний тип перевірки цілісності; перевірки цілісності виконано не буде"
#: src/xz/message.c:817
msgid "Memory usage limit reached"
msgstr "Перевищено обмеження на використання пам'яті"
#: src/xz/message.c:820
msgid "File format not recognized"
msgstr "Формат файла не розпізнано"
#: src/xz/message.c:823
msgid "Unsupported options"
msgstr "Непідтримувані параметри"
#: src/xz/message.c:826
msgid "Compressed data is corrupt"
msgstr "Стиснені дані пошкоджено"
#: src/xz/message.c:829
msgid "Unexpected end of input"
msgstr "Несподіваний кінець вхідних даних"
#: src/xz/message.c:862
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Потрібно %s МіБ пам'яті. Обмеження вимкнено."
#: src/xz/message.c:890
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Потрібно %s МіБ пам'яті. Маємо обмеження у %s."
#: src/xz/message.c:1057
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: ланцюжок фільтрування: %s\n"
#: src/xz/message.c:1067
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Спробуйте «%s --help» для отримання докладнішого опису."
#: src/xz/message.c:1093
#, 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:1100
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Обов’язкові аргументи для довгих форм запису параметрів є обов’язковими і для\n"
"скорочених форм.\n"
#: src/xz/message.c:1104
msgid " Operation mode:\n"
msgstr " Режим роботи:\n"
#: src/xz/message.c:1107
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:1113
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
"\n"
" Модифікатори дій:\n"
#: 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 зберігати (не вилучати) вхідні файли\n"
" -f, --force примусово перезаписувати вихідний файл і (роз)пакувати\n"
" посилання\n"
" -c, --stdout записувати дані до стандартного виведення і не вилучати\n"
" вхідні файли"
#: src/xz/message.c:1122
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
" --single-stream розпакувати лише перший потік і без запитань\n"
" ігнорувати решту вхідних даних"
#: 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"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse не створювати розріджених файлів під час розпаковування\n"
" -S, --suffix=.SUF використовувати суфікс .SUF для стиснених файлів\n"
" --files[=ФАЙЛ] прочитати назви файлів для обробки з файла ФАЙЛ; якщо\n"
" ФАЙЛ не вказано, назви файлів буде прочитано зі\n"
" стандартного джерела введення; список назв файлів має\n"
" бути завершено символом нового рядка\n"
" --files0[=ФАЙЛ] подібний до --files, але список файлів завершується\n"
" нуль-символом"
#: src/xz/message.c:1134
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
"\n"
" Базові параметри формату файлів і стискання:\n"
#: 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"
" -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:1141
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check не виконувати перевірку цілісності під час розпаковування"
#: 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!"
msgstr ""
" -0 ... -9 рівень стискання; типовим є 6; візьміть до уваги параметри\n"
" використання пам'яті для пакування і розпакування, перш\n"
" ніж використовувати рівні 7-9!"
#: src/xz/message.c:1149
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
" -e, --extreme спробувати поліпшити рівень стискання ширшим використанням\n"
" процесора; не впливає на вимоги щодо пам'яті для\n"
" розпаковування"
#: 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 ""
" -T, --threads=N використовувати не більше N потоків; типовим є\n"
" значення 1; встановіть значення 0, щоб програма\n"
" використовувала стільки потоків, скільки є ядер\n"
" у процесора"
#: 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 ""
" --block-size=РОЗМІР\n"
" розпочинати новий файл .xz кожні РОЗМІР байтів вхідних\n"
" даних; цим параметром слід користуватися для\n"
" встановлення розміру блоку для пакування у декілька\n"
" потоків"
#: 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 ""
" --block-list=РОЗМІРИ\n"
" розпочинати нові блоки .xz після вказаних інтервалів\n"
" нестиснених даних; записи відокремлюються комами"
#: 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 ""
" --flush-timeout=ЧАС_ОЧІКУВАННЯ\n"
" під час стискання, якщо з часу попереднього спорожнення\n"
" буфера і читання додаткового блоку вхідних даних\n"
" минуло більше за ЧАС_ОЧІКУВАННЯ мілісекунд, витерти\n"
" усі дані у черзі"
#: 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"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr ""
" --memlimit-compress=ОБМЕЖЕННЯ\n"
" --memlimit-decompress=ОБМЕЖЕННЯ\n"
" -M, --memlimit=ОБМЕЖЕННЯ\n"
" встановити обмеження на використання пам'яті для\n"
" стискання, розпаковування або обох режимів; ОБМЕЖЕННЯ\n"
" слід вказувати у байтах, % RAM або вказати 0 (типове\n"
" значення)"
#: 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"
msgstr ""
" --no-adjust якщо параметри стискання призводять до перевищення\n"
" обмежень на пам'ять, вивести помилку і не коригувати\n"
" параметри"
#: src/xz/message.c:1185
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
" Нетиповий ланцюжок фільтрування для стискання (альтернатива використання\n"
" рівнів):"
#: 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"
" 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"
" типове):\n"
" preset=РІВ скинути параметри до рівня (0-9[e])\n"
" dict=N розмір словника (4KiB - 1536MiB; 8MiB)\n"
" lc=N кількість буквальних контекстних бітів\n"
" (0-4; 3)\n"
" lp=N кількість буквальних бітів позицій (0-4; 0)\n"
" pb=N кількість бітів позицій (0-4; 2)\n"
" mode=РЕЖИМ режим стискання (fast, normal; normal)\n"
" nice=N довжина відповідності nice (2-273; 64)\n"
" mf=НАЗВА пошук відповідності (hc3, hc4, bt2, bt3,\n"
" bt4; bt4)\n"
" depth=N макс. глибина пошуку; 0=авто (типова)"
#: src/xz/message.c:1209
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[=ПАРАМЕТРИ] фільтр BCJ x86 (32-бітовий і 64-бітовий)\n"
" --powerpc[=ПАРАМЕТРИ] фільтр BCJ PowerPC (лише зворотний порядок байтів)\n"
" --ia64[=ПАРАМЕТРИ] фільтр BCJ IA-64 (Itanium)\n"
" --arm[=ПАРАМЕТРИ] фільтр BCJ ARM BCJ (лише прямий порядок байтів)\n"
" --armthumb[=ПАРАМЕТРИ] фільтр BCJ ARM-Thumb (лише прямий порядок байтів)\n"
" --sparc[=ПАРАМЕТРИ] фільтр BCJ SPARC\n"
" Коректні значення ПАРАМЕТРИ для усіх фільтрів BCJ:\n"
" start=N початковий зсув для перетворень (типовий=0)"
#: src/xz/message.c:1221
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=N відстань між байтами, які віднімаються\n"
" один від одного (1-256; 1)"
#: src/xz/message.c:1229
msgid ""
"\n"
" Other options:\n"
msgstr ""
"\n"
" Інші параметри:\n"
#: src/xz/message.c:1232
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"
" помилки\n"
" -v, --verbose режим докладних повідомлень; вкажіть двічі, щоб підвищити\n"
" докладність"
#: src/xz/message.c:1237
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn попередження не впливають на стан виходу"
#: src/xz/message.c:1239
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot використовувати повідомлення для обробки комп'ютером\n"
" (корисно для створення сценаріїв)"
#: src/xz/message.c:1242
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
" --info-memory вивести загальні дані щодо оперативної пам'яті і поточних\n"
" обмежень щодо її використання, потім завершити роботу"
#: 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 вивести коротке довідкове повідомлення (лише базові\n"
" параметри)\n"
" -H, --long-help вивести це розширене довідкове повідомлення і завершити\n"
" роботу"
#: 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 показати цю коротку довідку і завершити роботу\n"
" -H, --long-help показати розгорнуту довідку (із усіма додатковими\n"
" параметрами)"
#: src/xz/message.c:1254
msgid " -V, --version display the version number and exit"
msgstr " -V, --version вивести дані щодо версії програми і завершити роботу"
#: src/xz/message.c:1256
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
"Якщо вхідний файл не вказаний, або якщо вказано символ -,\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:1262
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Сповіщайте розробників про вади за адресою <%s>\n"
"(англійською і фінською).\n"
#: src/xz/message.c:1264
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Домашня сторінка %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"
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=%<PRIu32>"
msgstr "Вибраний засіб пошуку відповідності потребує принаймні nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: якщо вказано --format=raw, слід вказати і --suffix=.SUF, якщо дані виводяться не до стандартного виведення"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: назва файла має невідомий суфікс; пропускаємо"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "Значення параметра «%s» має належати до діапазону [%<PRIu64>, %<PRIu64>]"
#: src/xz/util.c:267
msgid "Empty filename, skipping"
msgstr "Порожня назва файла; пропускаємо"
#: src/xz/util.c:281
msgid "Compressed data cannot be read from a terminal"
msgstr "Стиснені дані неможливо прочитати з термінала"
#: src/xz/util.c:294
msgid "Compressed data cannot be written to a terminal"
msgstr "Стиснені дані неможливо записати до термінала"
#: src/common/tuklib_exit.c:40
msgid "Writing to standard output failed"
msgstr "Не вдалося записати дані до стандартного виведення"
#: src/common/tuklib_exit.c:43
msgid "Unknown error"
msgstr "Невідома помилка"
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Пісочницю вимкнено через несумісні параметри у рядку команди"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Пісочницю успішно увімкнено"

409
po/vi.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: xz 5.1.4beta\n" "Project-Id-Version: xz 5.1.4beta\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\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" "PO-Revision-Date: 2014-09-25 09:06+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\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" msgid "The environment variable %s contains too many arguments"
msgstr "Biến môi trường %s chứa quá nhiều đối số" 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 #: src/xz/coder.c:110
msgid "Maximum number of filters is four" msgid "Maximum number of filters is four"
msgstr "Số lượng bộ lọc tối đa là bốn" 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 #: src/xz/coder.c:161
msgid "The exact options of the presets may vary between software versions." msgid "The exact options of the presets may vary between software versions."
msgstr "" 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."
"Các tùy chọn trích xuất của chỉnh trước có thể biến đổi phụ thuộc vào phiên "
"bản."
#: src/xz/coder.c:184 #: src/xz/coder.c:184
msgid "The .lzma format supports only the LZMA1 filter" 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" 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" 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 #, c-format
msgid "Using up to %<PRIu32> threads." msgid "Using up to %<PRIu32> threads."
msgstr "Dùng đến %<PRIu32> tuyến trình." msgstr "Dùng đến %<PRIu32> tuyến trình."
#: src/xz/coder.c:247 #: src/xz/coder.c:251
msgid "Unsupported filter chain or filter options" 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" 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 #, c-format
msgid "Decompression will need %s MiB of memory." msgid "Decompression will need %s MiB of memory."
msgstr "Giải nén sẽ cần %s MiB bộ nhớ." msgstr "Giải nén sẽ cần %s MiB bộ nhớ."
#: src/xz/coder.c:290 #: src/xz/coder.c:300
#, c-format #, c-format
msgid "" msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
"Adjusted the number of threads from %s to %s to not exceed the memory usage " 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"
"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 #, c-format
msgid "" msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
"Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the " 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"
"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 #, c-format
msgid "Error creating a pipe: %s" msgid "Error creating a pipe: %s"
msgstr "Gặp lỗi khi tạo một ống dẫn: %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 #, c-format
msgid "%s: poll() failed: %s" msgid "%s: poll() failed: %s"
msgstr "%s: hàm poll() bị lỗi: %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 #. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously #. of the original file, and in that case it obviously
#. shouldn't be removed. #. shouldn't be removed.
#: src/xz/file_io.c:236 #: src/xz/file_io.c:332
#, c-format #, c-format
msgid "%s: File seems to have been moved, not removing" 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ỏ" 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 #, c-format
msgid "%s: Cannot remove: %s" msgid "%s: Cannot remove: %s"
msgstr "%s: Không thể gỡ bỏ: %s" msgstr "%s: Không thể gỡ bỏ: %s"
#: src/xz/file_io.c:268 #: src/xz/file_io.c:364
#, c-format #, c-format
msgid "%s: Cannot set the file owner: %s" msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Không thể đặt chủ sở hữu tập tin: %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 #, c-format
msgid "%s: Cannot set the file group: %s" msgid "%s: Cannot set the file group: %s"
msgstr "%s: Không thể đặt nhóm tập tin: %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 #, c-format
msgid "%s: Cannot set the file permissions: %s" msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Không thể đặt chế độ đọc ghi cho tập tin: %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 #, c-format
msgid "Error getting the file status flags from standard input: %s" 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" 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 #: src/xz/file_io.c:572 src/xz/file_io.c:634
#, 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
#, c-format #, c-format
msgid "%s: Is a symbolic link, skipping" msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Là một liên kết mềm nên bỏ qua" 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 #, c-format
msgid "%s: Is a directory, skipping" msgid "%s: Is a directory, skipping"
msgstr "%s: Không phải là một thư mục nên bỏ qua" 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 #, c-format
msgid "%s: Not a regular file, skipping" msgid "%s: Not a regular file, skipping"
msgstr "%s: Không phải là tập tin thường nên bỏ qua" 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 #, c-format
msgid "%s: File has setuid or setgid bit set, skipping" 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" 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 #, c-format
msgid "%s: File has sticky bit set, skipping" msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Tập tin có bít sticky nên bỏ qua" 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 #, c-format
msgid "%s: Input file has more than one hard link, skipping" 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" 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 #, c-format
msgid "Error restoring the status flags to standard input: %s" 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" 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 #, c-format
msgid "Error getting the file status flags from standard output: %s" 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" 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 #: src/xz/file_io.c:1014
#, 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
#, c-format #, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s" 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" 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 #, c-format
msgid "%s: Closing the file failed: %s" msgid "%s: Closing the file failed: %s"
msgstr "%s: Gặp lỗi khi đóng tập tin: %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 #, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s" msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "" 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"
"%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 #, c-format
msgid "%s: Read error: %s" msgid "%s: Read error: %s"
msgstr "%s: Lỗi đọc: %s" msgstr "%s: Lỗi đọc: %s"
#: src/xz/file_io.c:1059 #: src/xz/file_io.c:1177
#, c-format #, c-format
msgid "%s: Error seeking the file: %s" msgid "%s: Error seeking the file: %s"
msgstr "%s: Gặp lỗi khi di chuyển vị trí đọc tập tin: %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 #, c-format
msgid "%s: Unexpected end of file" msgid "%s: Unexpected end of file"
msgstr "%s: Kết thúc tập tin bất ngờ" 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 #, c-format
msgid "%s: Write error: %s" msgid "%s: Write error: %s"
msgstr "%s: Lỗi ghi: %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 #. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to #. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz". #. 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" 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" 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 #, c-format
msgid " Streams: %s\n" msgid " Streams: %s\n"
msgstr " Luồng dữ liệu: %s\n" msgstr " Luồng dữ liệu: %s\n"
#: src/xz/list.c:713 #: src/xz/list.c:719
#, c-format #, c-format
msgid " Blocks: %s\n" msgid " Blocks: %s\n"
msgstr " Khối: %s\n" msgstr " Khối: %s\n"
#: src/xz/list.c:715 #: src/xz/list.c:721
#, c-format #, c-format
msgid " Compressed size: %s\n" msgid " Compressed size: %s\n"
msgstr " Cỡ khi bị nén: %s\n" msgstr " Cỡ khi bị nén: %s\n"
#: src/xz/list.c:718 #: src/xz/list.c:724
#, c-format #, c-format
msgid " Uncompressed size: %s\n" msgid " Uncompressed size: %s\n"
msgstr " Cỡ sau giải nén: %s\n" msgstr " Cỡ sau giải nén: %s\n"
#: src/xz/list.c:721 #: src/xz/list.c:727
#, c-format #, c-format
msgid " Ratio: %s\n" msgid " Ratio: %s\n"
msgstr " Tỷ lệ nén: %s\n" msgstr " Tỷ lệ nén: %s\n"
#: src/xz/list.c:723 #: src/xz/list.c:729
#, c-format #, c-format
msgid " Check: %s\n" msgid " Check: %s\n"
msgstr " Kiểm tra: %s\n" msgstr " Kiểm tra: %s\n"
#: src/xz/list.c:724 #: src/xz/list.c:730
#, c-format #, c-format
msgid " Stream padding: %s\n" msgid " Stream padding: %s\n"
msgstr " Đệm luồng dữ liệu: %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 #. TRANSLATORS: The second line is column headings. All except
#. Check are right aligned; Check is left aligned. Test with #. Check are right aligned; Check is left aligned. Test with
#. "xz -lv foo.xz". #. "xz -lv foo.xz".
#: src/xz/list.c:752 #: src/xz/list.c:758
msgid "" msgid ""
" Streams:\n" " Streams:\n"
" Stream Blocks CompOffset UncompOffset CompSize " " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
"UncompSize Ratio Check Padding"
msgstr "" msgstr ""
" Luồng dữ liệu:\n" " Luồng dữ liệu:\n"
" Luồng Khối BùNén BùGiảiNén CỡNén " " Luồng Khối BùNén BùGiảiNén CỡNén CỡGiảiNén TỷLệ Ktra Đệm"
"CỡGiảiNén TỷLệ Ktra Đệm"
#. TRANSLATORS: The second line is column headings. All #. TRANSLATORS: The second line is column headings. All
#. except Check are right aligned; Check is left aligned. #. except Check are right aligned; Check is left aligned.
#: src/xz/list.c:807 #: src/xz/list.c:813
#, c-format #, c-format
msgid "" msgid ""
" Blocks:\n" " Blocks:\n"
" Stream Block CompOffset UncompOffset TotalSize " " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
"UncompSize Ratio Check"
msgstr "" msgstr ""
" Khối:\n" " Khối:\n"
" Luồng Khối BùNén BùGiảiNén CỡTổng " " Luồng Khối BùNén BùGiảiNén CỡTổng CỡGiảiNén TỷLệ Ktra"
"CỡGiảiNén TỷLệ Ktra"
#. TRANSLATORS: These are additional column headings #. TRANSLATORS: These are additional column headings
#. for the most verbose listing mode. CheckVal #. for the most verbose listing mode. CheckVal
@ -417,57 +412,56 @@ msgstr ""
#. are right aligned. %*s is replaced with 0-120 #. are right aligned. %*s is replaced with 0-120
#. spaces to make the CheckVal column wide enough. #. spaces to make the CheckVal column wide enough.
#. Test with "xz -lvv foo.xz". #. Test with "xz -lvv foo.xz".
#: src/xz/list.c:819 #: src/xz/list.c:825
#, c-format #, c-format
msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
msgstr " GTrịKiểm %*s Đầu Cờ CỡNén DùngRAM BộLọc" 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 #, c-format
msgid " Memory needed: %s MiB\n" msgid " Memory needed: %s MiB\n"
msgstr " Bộ nhớ cần: %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 #, c-format
msgid " Sizes in headers: %s\n" msgid " Sizes in headers: %s\n"
msgstr " Kích cỡ phần đầu: %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" msgid "Yes"
msgstr "Có" msgstr "Có"
#: src/xz/list.c:900 src/xz/list.c:1075 #: src/xz/list.c:906 src/xz/list.c:1081
msgid "No" msgid "No"
msgstr "Không" 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 #, c-format
msgid " Minimum XZ Utils version: %s\n" msgid " Minimum XZ Utils version: %s\n"
msgstr " Phiên bản “XZ Utils” tối thiểu: %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 #. 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". #. 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 #, c-format
msgid "%s file\n" msgid "%s file\n"
msgid_plural "%s files\n" msgid_plural "%s files\n"
msgstr[0] "%s tập tin\n" msgstr[0] "%s tập tin\n"
#: src/xz/list.c:1064 #: src/xz/list.c:1070
msgid "Totals:" msgid "Totals:"
msgstr "Tổng cộng:" msgstr "Tổng cộng:"
#: src/xz/list.c:1065 #: src/xz/list.c:1071
#, c-format #, c-format
msgid " Number of files: %s\n" msgid " Number of files: %s\n"
msgstr " Số tập tin: %s\n" msgstr " Số tập tin: %s\n"
#: src/xz/list.c:1140
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr ""
"--list chỉ hoạt động trên các tập tin .xz (--format=xz hay --format=auto)"
#: src/xz/list.c:1146 #: 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)"
#: src/xz/list.c:1152
msgid "--list does not support reading from standard input" msgid "--list does not support reading from standard input"
msgstr "--list không hỗ trợ đọc từ đầu vào tiêu chuẩn" 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 #: src/xz/main.c:120
#, c-format #, c-format
msgid "" msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
"%s: Null character found when reading filenames; maybe you meant to use `--" 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'?"
"files0' instead of `--files'?"
msgstr ""
"%s: Gặp ký hiệu Null khi đọc tên tập tin; có lẽ ý bạn muốn là dùng “--"
"files0” chứ không phải “--files'?"
#: src/xz/main.c:174 #: src/xz/main.c:174
msgid "Compression and decompression with --robot are not supported yet." 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ợ." msgstr "Nén và giải nén với --robot vẫn chưa được hỗ trợ."
#: src/xz/main.c:231 #: src/xz/main.c:252
msgid "" msgid "Cannot read data from standard input when reading filenames from standard input"
"Cannot read data from standard input when reading filenames from standard " 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"
"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 #. TRANSLATORS: This is the program name in the beginning
#. of the line in messages. Usually it becomes "xz: ". #. of the line in messages. Usually it becomes "xz: ".
#. This is a translatable string because French needs #. This is a translatable string because French needs
#. a space before a colon. #. a space before a colon.
#: src/xz/message.c:713 #: src/xz/message.c:714
#, c-format #, c-format
msgid "%s: " msgid "%s: "
msgstr "%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)" msgid "Internal error (bug)"
msgstr "Lỗi nội bộ (lỗi)" msgstr "Lỗi nội bộ (lỗi)"
#: src/xz/message.c:783 #: src/xz/message.c:784
msgid "Cannot establish signal handlers" msgid "Cannot establish signal handlers"
msgstr "Không thể thiết lập bộ xử lý tín hiệu" 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" msgid "No integrity check; not verifying file integrity"
msgstr "" 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"
"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" msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "" 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"
"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" msgid "Memory usage limit reached"
msgstr "Đã chạm mốc giới hạn sử dụng bộ nhớ" 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" msgid "File format not recognized"
msgstr "Không nhận ra định dạng tập tin" 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" msgid "Unsupported options"
msgstr "Tùy chọn không được hỗ trợ" 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" msgid "Compressed data is corrupt"
msgstr "Dữ liệu đã nén bị hỏng" msgstr "Dữ liệu đã nén bị hỏng"
#: src/xz/message.c:814 #: src/xz/message.c:815
msgid "Unexpected end of input" msgid "Unexpected end of input"
msgstr "Gặp kết thúc đầu vào bất ngờ" 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 #, c-format
msgid "%s MiB of memory is required. The limiter is disabled." 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." 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 #, c-format
msgid "%s MiB of memory is required. The limit is %s." 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." 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 #, c-format
msgid "%s: Filter chain: %s\n" msgid "%s: Filter chain: %s\n"
msgstr "%s: Móc xích lọc: %s\n" msgstr "%s: Móc xích lọc: %s\n"
#: src/xz/message.c:1052 #: src/xz/message.c:1053
#, c-format #, c-format
msgid "Try `%s --help' for more information." msgid "Try `%s --help' for more information."
msgstr "Hãy chạy lệnh “%s --help” để xem thông tin thêm." 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 #, c-format
msgid "" msgid ""
"Usage: %s [OPTION]... [FILE]...\n" "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én hoặc giải nén các TẬP TIN có định dạng .xz.\n"
"\n" "\n"
#: src/xz/message.c:1085 #: src/xz/message.c:1086
msgid "" msgid "Mandatory arguments to long options are mandatory for short options too.\n"
"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"
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" msgid " Operation mode:\n"
msgstr " Chế độ thao tác:\n" msgstr " Chế độ thao tác:\n"
#: src/xz/message.c:1092 #: src/xz/message.c:1093
msgid "" msgid ""
" -z, --compress force compression\n" " -z, --compress force compression\n"
" -d, --decompress force decompression\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" " -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" " -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 "" msgid ""
"\n" "\n"
" Operation modifiers:\n" " Operation modifiers:\n"
@ -611,7 +592,7 @@ msgstr ""
"\n" "\n"
" Bộ chỉnh sửa thao tác:\n" " Bộ chỉnh sửa thao tác:\n"
#: src/xz/message.c:1101 #: src/xz/message.c:1102
msgid "" msgid ""
" -k, --keep keep (don't delete) input files\n" " -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\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" " -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" " -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 "" msgid ""
" --single-stream decompress only the first stream, and silently\n" " --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data" " 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" " --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ể" " dữ liệu đầu vào còn lại có thể"
#: src/xz/message.c:1110 #: src/xz/message.c:1111
msgid "" msgid ""
" --no-sparse do not create sparse files when decompressing\n" " --no-sparse do not create sparse files when decompressing\n"
" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n" " --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n" " omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline " " filenames must be terminated with the newline character\n"
"character\n"
" --files0[=FILE] like --files but use the null character as terminator" " --files0[=FILE] like --files but use the null character as terminator"
msgstr "" msgstr ""
" --no-sparse đừng tạo các tập tin rải rác khi giải nén\n" " --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" " -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" " --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 " " TẬP-TIN thì tên tập tin sẽ được đọc vào từ đầu vào tiêu\n"
"tiêu\n"
" chuẩn; chúng phải được kết thúc bằng ký tự dòng mới\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" " --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 "" msgid ""
"\n" "\n"
" Basic file format and compression options:\n" " Basic file format and compression options:\n"
@ -655,46 +634,39 @@ msgstr ""
"\n" "\n"
" Các tùy chọn về định dạng và nén cơ bản:\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 "" msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n" " -F, --format=FMT file format to encode or decode; possible values are\n"
" `auto' (default), `xz', `lzma', and `raw'\n" " `auto' (default), `xz', `lzma', and `raw'\n"
" -C, --check=CHECK integrity check type: `none' (use with caution),\n" " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
" `crc32', `crc64' (default), or `sha256'" " `crc32', `crc64' (default), or `sha256'"
msgstr "" msgstr ""
" -F, --format=ĐDạng định dạng tập tin cần mã hóa hoặc giải mã; giá trị có " " -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"
"thể\n"
" là “auto” (mặc định), “xz”, “lzma”, và “raw”\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" " -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”" " “crc32”, “crc64” (mặc định), hay “sha256”"
#: src/xz/message.c:1126 #: src/xz/message.c:1127
msgid "" msgid " --ignore-check don't verify the integrity check when decompressing"
" --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" 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 "" msgid ""
" -0 ... -9 compression preset; default is 6; take compressor " " -0 ... -9 compression preset; default is 6; take compressor *and*\n"
"*and*\n" " decompressor memory usage into account before using 7-9!"
" decompressor memory usage into account before using "
"7-9!"
msgstr "" msgstr ""
" -0 ... -9 đặt mức nén; mặc định là 6; tiêu dùng nhiều bộ nhớ khi " " -0 ... -9 đặt mức nén; mặc định là 6; tiêu dùng nhiều bộ nhớ khi nén\n"
"nén\n"
" và giải nén, nên tính toán trước khi dùng 7-9!" " 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 "" msgid ""
" -e, --extreme try to improve compression ratio by using more CPU " " -e, --extreme try to improve compression ratio by using more CPU time;\n"
"time;\n"
" does not affect decompressor memory requirements" " does not affect decompressor memory requirements"
msgstr "" msgstr ""
" -e, --extreme cố gắng nâng cao mức nén bằng cách dùng nhiều CPU " " -e, --extreme cố gắng nâng cao mức nén bằng cách dùng nhiều CPU hơn;\n"
"hơn;\n"
" nhưng không yêu cần nhiều bộ nhớ khi giải 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 "" msgid ""
" -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" " -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" " 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" " -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ý" " 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 "" msgid ""
" --block-size=SIZE\n" " --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of " " start a new .xz block after every SIZE bytes of input;\n"
"input;\n"
" use this to set the block size for threaded compression" " use this to set the block size for threaded compression"
msgstr "" msgstr ""
" --block-size=CỠ\n" " --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" " 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" " 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 "" msgid ""
" --block-list=SIZES\n" " --block-list=SIZES\n"
" start a new .xz block after the given comma-separated\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" " 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" " 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 "" msgid ""
" --flush-timeout=TIMEOUT\n" " --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds " " when compressing, if more than TIMEOUT milliseconds has\n"
"has\n" " passed since the previous flush and reading more input\n"
" passed since the previous flush and reading more "
"input\n"
" would block, all pending data is flushed out" " would block, all pending data is flushed out"
msgstr "" msgstr ""
" --flush-timeout=THỜI_GIAN_CHỜ\n" " --flush-timeout=THỜI_GIAN_CHỜ\n"
" khi đang nén, nếu đã trải qua hơn THỜI_GIAN_CHỜ milli-" " khi đang nén, nếu đã trải qua hơn THỜI_GIAN_CHỜ milli-giây\n"
"giây\n" " kể từ lần đẩy dữ liệu lên đĩa trước đó và đang đọc thêm\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" " 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 #, no-c-format
msgid "" msgid ""
" --memlimit-compress=LIMIT\n" " --memlimit-compress=LIMIT\n"
" --memlimit-decompress=LIMIT\n" " --memlimit-decompress=LIMIT\n"
" -M, --memlimit=LIMIT\n" " -M, --memlimit=LIMIT\n"
" set memory usage limit for compression, " " set memory usage limit for compression, decompression,\n"
"decompression,\n"
" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" " or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgstr "" msgstr ""
" --memlimit-compress=GIỚI_HẠN\n" " --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" " hoặc cả hai; GIỚI_HẠN có đơn vị là byte, % của RAM,\n"
" hay 0 cho mặc định" " hay 0 cho mặc định"
#: src/xz/message.c:1164 #: src/xz/message.c:1165
msgid "" msgid ""
" --no-adjust if compression settings exceed the memory usage " " --no-adjust if compression settings exceed the memory usage limit,\n"
"limit,\n" " give an error instead of adjusting the settings downwards"
" give an error instead of adjusting the settings "
"downwards"
msgstr "" msgstr ""
" --no-adjust nếu các cài đặt nén vượt quá giới hạn dùng bộ nhớ,\n" " --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" " đư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 "" msgid ""
"\n" "\n"
" Custom filter chain for compression (alternative for using presets):" " Custom filter chain for compression (alternative for using presets):"
@ -774,13 +738,11 @@ msgstr ""
"\n" "\n"
" Móc xích lọc tùy chỉnh cho nén (thay cho việc dùng chỉnh trước):" " 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 "" msgid ""
"\n" "\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero " " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
"or\n" " --lzma2[=OPTS] more of the following options (valid values; default):\n"
" --lzma2[=OPTS] more of the following options (valid values; "
"default):\n"
" preset=PRE reset options to a preset (0-9[e])\n" " preset=PRE reset options to a preset (0-9[e])\n"
" dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n" " dict=NUM dictionary size (4KiB - 1536MiB; 8MiB)\n"
" lc=NUM number of literal context bits (0-4; 3)\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" " pb=NUM number of position bits (0-4; 2)\n"
" mode=MODE compression mode (fast, normal; normal)\n" " mode=MODE compression mode (fast, normal; normal)\n"
" nice=NUM nice length of a match (2-273; 64)\n" " nice=NUM nice length of a match (2-273; 64)\n"
" mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; " " mf=NAME match finder (hc3, hc4, bt2, bt3, bt4; bt4)\n"
"bt4)\n" " depth=NUM maximum search depth; 0=automatic (default)"
" depth=NUM maximum search depth; 0=automatic "
"(default)"
msgstr "" msgstr ""
"\n" "\n"
" --lzma1[=CTC] LZMA1 hay LZMA2; CÁC-TÙY-CHỌN là danh sách của không " " --lzma1[=CTC] LZMA1 hay LZMA2; CÁC-TÙY-CHỌN là danh sách của không hoặc\n"
"hoặc\n"
" --lzma2[=CTC] hơn các tùy chọn sau đây (giá trị hợp lệ; mặc định):\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" " 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" " 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" " pb=SỐ số bít vị trí (0-4; 2)\n"
" mode=CHẾ_ĐỘ chế độ nén (fast, normal; normal)\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" " 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; " " mf=TÊN bộ tìm khớp (hc3, hc4, bt2, bt3, bt4; bt4)\n"
"bt4)\n" " depth=SỐ mức sâu tìm kiếm tối đa; 0=tự động (mặc định)"
" 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 "" msgid ""
"\n" "\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\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" " --armthumb[=OPTS] bộ lọc ARM-Thumb BCJ (chỉ little endian)\n"
" --sparc[=OPTS] bộ lọc SPARC BCJ\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" " 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 " " start=SỐ khoảng bù khởi đầu cho chuyển đổi (mặc định=0)"
"định=0)"
#: src/xz/message.c:1206 #: src/xz/message.c:1207
msgid "" msgid ""
"\n" "\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\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" " dist=SỐ khoảng cách giữa các byte được trừ từ\n"
" những cái khác (1-256; 1)" " những cái khác (1-256; 1)"
#: src/xz/message.c:1214 #: src/xz/message.c:1215
msgid "" msgid ""
"\n" "\n"
" Other options:\n" " Other options:\n"
@ -853,39 +809,34 @@ msgstr ""
"\n" "\n"
" Tùy chọn khác:\n" " Tùy chọn khác:\n"
#: src/xz/message.c:1217 #: src/xz/message.c:1218
msgid "" msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors " " -q, --quiet suppress warnings; specify twice to suppress errors too\n"
"too\n"
" -v, --verbose be verbose; specify twice for even more verbose" " -v, --verbose be verbose; specify twice for even more verbose"
msgstr "" msgstr ""
" -q, --quiet không xuất các cảnh báo;\n" " -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" " 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" " -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" msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr "" 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"
" -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 #: src/xz/message.c:1225
msgid "" msgid " --robot use machine-parsable messages (useful for scripts)"
" --robot use machine-parsable messages (useful for scripts)"
msgstr "" msgstr ""
" --robot dùng các thông điệp máy có thể phân tích\n" " --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)" " (hữu dụng với scripts)"
#: src/xz/message.c:1227 #: src/xz/message.c:1228
msgid "" msgid ""
" --info-memory display the total amount of RAM and the currently " " --info-memory display the total amount of RAM and the currently active\n"
"active\n"
" memory usage limits, and exit" " memory usage limits, and exit"
msgstr "" msgstr ""
" --info-memory hiển thị tổng lượng RAM và mức giới hạn tiêu dùng\n" " --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" " bộ nhớ hiện tại, rồi thoát"
#: src/xz/message.c:1230 #: src/xz/message.c:1231
msgid "" msgid ""
" -h, --help display the short help (lists only the basic options)\n" " -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit" " -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" " (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" " -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 "" msgid ""
" -h, --help display this short help and exit\n" " -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)" " -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" " -H, --long-help hiển thị trợ giúp đầy đủ\n"
" (liệt kê cả những tùy chọn cấp cao)" " (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" msgid " -V, --version display the version number and exit"
msgstr " -V, --version hiển thị số phiên bản và thoát" 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 "" msgid ""
"\n" "\n"
"With no FILE, or when FILE is -, read standard input.\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 #. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW #. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks. #. address for translation bugs. Thanks.
#: src/xz/message.c:1247 #: src/xz/message.c:1248
#, c-format #, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n" msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "" msgstr ""
"Hãy báo cáo lỗi cho <%s> (bằng tiếng Anh hoặc Phần Lan).\n" "Hãy báo cáo lỗi cho <%s> (bằng tiếng Anh hoặc Phần Lan).\n"
"Thông báo lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n" "Thông báo lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n"
#: src/xz/message.c:1249 #: src/xz/message.c:1250
#, c-format #, c-format
msgid "%s home page: <%s>\n" msgid "%s home page: <%s>\n"
msgstr "Trang chủ %s: <%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." 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." 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 #: src/xz/options.c:86
#, c-format #, c-format
msgid "%s: Options must be `name=value' pairs separated with commas" msgid "%s: Options must be `name=value' pairs separated with commas"
msgstr "" 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"
"%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 #: src/xz/options.c:93
#, c-format #, 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 #: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format #, c-format
msgid "" msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
"%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"
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 #: src/xz/suffix.c:164
#, c-format #, 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" msgid "Unknown error"
msgstr "Lỗi chưa biết" 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 "" #~ msgid ""
#~ " --block-size=SIZE\n" #~ " --block-size=SIZE\n"
#~ " when compressing to the .xz format, start a new " #~ " when compressing to the .xz format, start a new block\n"
#~ "block\n" #~ " after every SIZE bytes of input; 0=disabled (default)"
#~ " after every SIZE bytes of input; 0=disabled "
#~ "(default)"
#~ msgstr "" #~ msgstr ""
#~ " --block-size=CỠ\n" #~ " --block-size=CỠ\n"
#~ " khi nén thành định dạng .xz, bắt đầu khối mới\n" #~ " khi nén thành định dạng .xz, bắt đầu khối mới\n"

963
po/zh_CN.po Normal file
View File

@ -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) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.2.1\n"
#: 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 %<PRIu32> threads."
msgstr "使用最多 %<PRIu32> 个线程。"
#: 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 "%spoll() 失败:%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 "%sseek 文件时出错:%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 简体中文翻译团队 <i18n-zh@googlegroups.com>\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=%<PRIu32>"
msgstr "所选中的匹配搜索器match finder至少需要 nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s在启用 --format-raw 选项时,必须指定 --suffix=.SUF 获知写入至标准输出"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s文件名有未知后缀跳过"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "选项“%s”的值必须位于 [%<PRIu64>, %<PRIu64>] 范围内"
#: 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 "未知错误"

956
po/zh_TW.po Normal file
View File

@ -0,0 +1,956 @@
# Chinese translations for xz package.
# This file is put in the public domain.
#
# pan93412 <pan93412@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-04-23 22:00+0800\n"
"Last-Translator: pan93412 <pan93412@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\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 %<PRIu32> threads."
msgstr "使用最多 %<PRIu32> 個執行緒。"
#: 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 "%spoll() 失敗:%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=%<PRIu32>"
msgstr "選取的符合搜尋工具需要至少 nice=%<PRIu32>"
#: src/xz/suffix.c:133 src/xz/suffix.c:258
#, c-format
msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s搭配 --format=raw 時,除非寫入標準輸出,否則需要 --suffix=.SUF"
#: src/xz/suffix.c:164
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s檔名有未知後綴跳過"
#: src/xz/suffix.c:185
#, 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 [%<PRIu64>, %<PRIu64>]"
msgstr "選項「%s」的數值必須在 [%<PRIu64>, %<PRIu64>] 範圍內"
#: 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 "未知錯誤"

2
po4a/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/man
/xz-man.pot

5532
po4a/de.po Normal file

File diff suppressed because it is too large Load Diff

3543
po4a/fr.po Normal file

File diff suppressed because it is too large Load Diff

14
po4a/po4a.conf Normal file
View File

@ -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] de fr
[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

45
po4a/update-po Executable file
View File

@ -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="[See the headers in the input files.]" \
po4a.conf

View File

@ -6,7 +6,9 @@
*/ */
#include <winresrc.h> #include <winresrc.h>
#include "config.h" #ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#define LZMA_H_INTERNAL #define LZMA_H_INTERNAL
#define LZMA_H_INTERNAL_RC #define LZMA_H_INTERNAL_RC
#include "lzma/version.h" #include "lzma/version.h"
@ -17,7 +19,7 @@
#define MY_VERSION LZMA_VERSION_MAJOR,LZMA_VERSION_MINOR,LZMA_VERSION_PATCH,MY_BUILD #define MY_VERSION LZMA_VERSION_MAJOR,LZMA_VERSION_MINOR,LZMA_VERSION_PATCH,MY_BUILD
#define MY_FILENAME MY_NAME MY_SUFFIX #define MY_FILENAME MY_NAME MY_SUFFIX
#define MY_COMPANY "The Tukaani Project <http://tukaani.org/>" #define MY_COMPANY "The Tukaani Project <https://tukaani.org/>"
#define MY_PRODUCT PACKAGE_NAME " <" PACKAGE_URL ">" #define MY_PRODUCT PACKAGE_NAME " <" PACKAGE_URL ">"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

View File

@ -370,10 +370,11 @@ typedef struct {
BOOL pending_; \ BOOL pending_; \
if (!InitOnceBeginInitialize(&once_, 0, &pending_, NULL)) \ if (!InitOnceBeginInitialize(&once_, 0, &pending_, NULL)) \
abort(); \ abort(); \
if (pending_) \ if (pending_) { \
func(); \ func(); \
if (!InitOnceComplete(&once, 0, NULL)) \ if (!InitOnceComplete(&once, 0, NULL)) \
abort(); \ abort(); \
} \
} while (0) } while (0)
#endif #endif

View File

@ -44,9 +44,7 @@
// Some pre-C99 systems have SIZE_MAX in limits.h instead of stdint.h. The // 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. // limits are also used to figure out some macros missing from pre-C99 systems.
#ifdef HAVE_LIMITS_H #include <limits.h>
# include <limits.h>
#endif
// Be more compatible with systems that have non-conforming inttypes.h. // 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. // 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 // 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. // they exists, since that shouldn't do any harm, but may improve portability.
#ifdef HAVE_STRING_H #include <string.h>
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H #ifdef HAVE_STRINGS_H
# include <strings.h> # include <strings.h>
@ -193,7 +189,8 @@ typedef unsigned char _Bool;
# define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) # define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
#endif #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))) # define lzma_attr_alloc_size(x) __attribute__((__alloc_size__(x)))
#else #else
# define lzma_attr_alloc_size(x) # define lzma_attr_alloc_size(x)

View File

@ -18,6 +18,10 @@
# endif # endif
# include <windows.h> # include <windows.h>
// glibc >= 2.9
#elif defined(TUKLIB_CPUCORES_SCHED_GETAFFINITY)
# include <sched.h>
// FreeBSD // FreeBSD
#elif defined(TUKLIB_CPUCORES_CPUSET) #elif defined(TUKLIB_CPUCORES_CPUSET)
# include <sys/param.h> # include <sys/param.h>
@ -49,12 +53,17 @@ tuklib_cpucores(void)
GetSystemInfo(&sysinfo); GetSystemInfo(&sysinfo);
ret = sysinfo.dwNumberOfProcessors; ret = sysinfo.dwNumberOfProcessors;
#elif defined(TUKLIB_CPUCORES_SCHED_GETAFFINITY)
cpu_set_t cpu_mask;
if (sched_getaffinity(0, sizeof(cpu_mask), &cpu_mask) == 0)
ret = (uint32_t)CPU_COUNT(&cpu_mask);
#elif defined(TUKLIB_CPUCORES_CPUSET) #elif defined(TUKLIB_CPUCORES_CPUSET)
cpuset_t set; cpuset_t set;
if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1,
sizeof(set), &set) == 0) { sizeof(set), &set) == 0) {
# ifdef CPU_COUNT # ifdef CPU_COUNT
ret = CPU_COUNT(&set); ret = (uint32_t)CPU_COUNT(&set);
# else # else
for (unsigned i = 0; i < CPU_SETSIZE; ++i) for (unsigned i = 0; i < CPU_SETSIZE; ++i)
if (CPU_ISSET(i, &set)) if (CPU_ISSET(i, &set))
@ -63,12 +72,21 @@ tuklib_cpucores(void)
} }
#elif defined(TUKLIB_CPUCORES_SYSCTL) #elif defined(TUKLIB_CPUCORES_SYSCTL)
// On OpenBSD HW_NCPUONLINE tells the number of processor cores that
// are online so it is preferred over HW_NCPU which also counts cores
// that aren't currently available. The number of cores online is
// often less than HW_NCPU because OpenBSD disables simultaneous
// multi-threading (SMT) by default.
# ifdef HW_NCPUONLINE
int name[2] = { CTL_HW, HW_NCPUONLINE };
# else
int name[2] = { CTL_HW, HW_NCPU }; int name[2] = { CTL_HW, HW_NCPU };
# endif
int cpus; int cpus;
size_t cpus_size = sizeof(cpus); size_t cpus_size = sizeof(cpus);
if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1 if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1
&& cpus_size == sizeof(cpus) && cpus > 0) && cpus_size == sizeof(cpus) && cpus > 0)
ret = cpus; ret = (uint32_t)cpus;
#elif defined(TUKLIB_CPUCORES_SYSCONF) #elif defined(TUKLIB_CPUCORES_SYSCONF)
# ifdef _SC_NPROCESSORS_ONLN # ifdef _SC_NPROCESSORS_ONLN
@ -79,12 +97,12 @@ tuklib_cpucores(void)
const long cpus = sysconf(_SC_NPROC_ONLN); const long cpus = sysconf(_SC_NPROC_ONLN);
# endif # endif
if (cpus > 0) if (cpus > 0)
ret = cpus; ret = (uint32_t)cpus;
#elif defined(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC) #elif defined(TUKLIB_CPUCORES_PSTAT_GETDYNAMIC)
struct pst_dynamic pst; struct pst_dynamic pst;
if (pstat_getdynamic(&pst, sizeof(pst), 1, 0) != -1) if (pstat_getdynamic(&pst, sizeof(pst), 1, 0) != -1)
ret = pst.psd_proc_cnt; ret = (uint32_t)pst.psd_proc_cnt;
#endif #endif
return ret; return ret;

View File

@ -14,6 +14,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include "tuklib_gettext.h" #include "tuklib_gettext.h"
#include "tuklib_progname.h" #include "tuklib_progname.h"

View File

@ -6,22 +6,26 @@
/// This file provides macros or functions to do some basic integer and bit /// This file provides macros or functions to do some basic integer and bit
/// operations. /// 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: readXXne(ptr)
/// - Unaligned 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 swapping: bswapXX(num)
/// - Byte order conversions to/from native: convXXYe(num) /// - Byte order conversions to/from native (byteswaps if Y isn't
/// - Aligned reads: readXXYe(ptr) /// the native endianness): convXXYe(num)
/// - Aligned writes: writeXXYe(ptr, num) /// - Unaligned reads (16/32-bit only): readXXYe(ptr)
/// - Unaligned reads (16/32-bit only): unaligned_readXXYe(ptr) /// - Unaligned writes (16/32-bit only): writeXXYe(ptr, num)
/// - Unaligned writes (16/32-bit only): unaligned_writeXXYe(ptr, num) /// - Aligned reads: aligned_readXXYe(ptr)
/// - Aligned writes: aligned_writeXXYe(ptr, num)
/// ///
/// Since they can macros, the arguments should have no side effects since /// Since the above can macros, the arguments should have no side effects
/// they may be evaluated more than once. /// because they may be evaluated more than once.
/// ///
/// \todo PowerPC and possibly some other architectures support /// Bit scan operations for non-zero 32-bit integers (inline functions):
/// byte swapping load and store instructions. This file
/// doesn't take advantage of those instructions.
///
/// Bit scan operations for non-zero 32-bit integers:
/// - Bit scan reverse (find highest non-zero bit): bsr32(num) /// - Bit scan reverse (find highest non-zero bit): bsr32(num)
/// - Count leading zeros: clz32(num) /// - Count leading zeros: clz32(num)
/// - Count trailing zeros: ctz32(num) /// - Count trailing zeros: ctz32(num)
@ -42,13 +46,32 @@
#define TUKLIB_INTEGER_H #define TUKLIB_INTEGER_H
#include "tuklib_common.h" #include "tuklib_common.h"
#include <string.h>
// Newer Intel C compilers require immintrin.h for _bit_scan_reverse()
// and such functions.
#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500)
# include <immintrin.h>
// Only include <intrin.h> when it is needed. GCC and Clang can both
// use __builtin's, so we only need Windows instrincs when using MSVC.
// GCC and Clang can set _MSC_VER on Windows, so we need to exclude these
// cases explicitly.
#elif defined(_MSC_VER) && !TUKLIB_GNUC_REQ(3, 4) && !defined(__clang__)
# include <intrin.h>
#endif
//////////////////////////////////////// ///////////////////
// Operating system specific features // // Byte swapping //
//////////////////////////////////////// ///////////////////
#if defined(HAVE_BYTESWAP_H) #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)
#elif defined(HAVE_BYTESWAP_H)
// glibc, uClibc, dietlibc // glibc, uClibc, dietlibc
# include <byteswap.h> # include <byteswap.h>
# ifdef HAVE_BSWAP_16 # ifdef HAVE_BSWAP_16
@ -97,34 +120,33 @@
# endif # endif
#endif #endif
///////////////////
// Byte swapping //
///////////////////
#ifndef bswap16 #ifndef bswap16
# define bswap16(num) \ # define bswap16(n) (uint16_t)( \
(((uint16_t)(num) << 8) | ((uint16_t)(num) >> 8)) (((n) & 0x00FFU) << 8) \
| (((n) & 0xFF00U) >> 8) \
)
#endif #endif
#ifndef bswap32 #ifndef bswap32
# define bswap32(num) \ # define bswap32(n) (uint32_t)( \
( (((uint32_t)(num) << 24) ) \ (((n) & UINT32_C(0x000000FF)) << 24) \
| (((uint32_t)(num) << 8) & UINT32_C(0x00FF0000)) \ | (((n) & UINT32_C(0x0000FF00)) << 8) \
| (((uint32_t)(num) >> 8) & UINT32_C(0x0000FF00)) \ | (((n) & UINT32_C(0x00FF0000)) >> 8) \
| (((uint32_t)(num) >> 24) ) ) | (((n) & UINT32_C(0xFF000000)) >> 24) \
)
#endif #endif
#ifndef bswap64 #ifndef bswap64
# define bswap64(num) \ # define bswap64(n) (uint64_t)( \
( (((uint64_t)(num) << 56) ) \ (((n) & UINT64_C(0x00000000000000FF)) << 56) \
| (((uint64_t)(num) << 40) & UINT64_C(0x00FF000000000000)) \ | (((n) & UINT64_C(0x000000000000FF00)) << 40) \
| (((uint64_t)(num) << 24) & UINT64_C(0x0000FF0000000000)) \ | (((n) & UINT64_C(0x0000000000FF0000)) << 24) \
| (((uint64_t)(num) << 8) & UINT64_C(0x000000FF00000000)) \ | (((n) & UINT64_C(0x00000000FF000000)) << 8) \
| (((uint64_t)(num) >> 8) & UINT64_C(0x00000000FF000000)) \ | (((n) & UINT64_C(0x000000FF00000000)) >> 8) \
| (((uint64_t)(num) >> 24) & UINT64_C(0x0000000000FF0000)) \ | (((n) & UINT64_C(0x0000FF0000000000)) >> 24) \
| (((uint64_t)(num) >> 40) & UINT64_C(0x000000000000FF00)) \ | (((n) & UINT64_C(0x00FF000000000000)) >> 40) \
| (((uint64_t)(num) >> 56) ) ) | (((n) & UINT64_C(0xFF00000000000000)) >> 56) \
)
#endif #endif
// Define conversion macros using the basic byte swapping macros. // Define conversion macros using the basic byte swapping macros.
@ -169,76 +191,76 @@
#endif #endif
////////////////////////////// ////////////////////////////////
// Aligned reads and writes // // Unaligned reads and writes //
////////////////////////////// ////////////////////////////////
// The traditional way of casting e.g. *(const uint16_t *)uint8_pointer
// 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.
// 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 static inline uint16_t
read16be(const uint8_t *buf) read16ne(const uint8_t *buf)
{ {
uint16_t num = *(const uint16_t *)buf; #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \
return conv16be(num); && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING)
} return *(const uint16_t *)buf;
#else
uint16_t num;
static inline uint16_t memcpy(&num, buf, sizeof(num));
read16le(const uint8_t *buf) return num;
{ #endif
uint16_t num = *(const uint16_t *)buf;
return conv16le(num);
} }
static inline uint32_t static inline uint32_t
read32be(const uint8_t *buf) read32ne(const uint8_t *buf)
{ {
uint32_t num = *(const uint32_t *)buf; #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \
return conv32be(num); && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING)
} return *(const uint32_t *)buf;
#else
uint32_t num;
static inline uint32_t memcpy(&num, buf, sizeof(num));
read32le(const uint8_t *buf) return num;
{ #endif
uint32_t num = *(const uint32_t *)buf;
return conv32le(num);
} }
static inline uint64_t static inline uint64_t
read64be(const uint8_t *buf) read64ne(const uint8_t *buf)
{ {
uint64_t num = *(const uint64_t *)buf; #if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \
return conv64be(num); && defined(TUKLIB_USE_UNSAFE_TYPE_PUNNING)
return *(const uint64_t *)buf;
#else
uint64_t num;
memcpy(&num, buf, sizeof(num));
return num;
#endif
} }
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 static inline void
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)
*(uint16_t *)buf = num; *(uint16_t *)buf = num;
#else
memcpy(buf, &num, sizeof(num));
#endif
return; return;
} }
@ -246,7 +268,12 @@ write16ne(uint8_t *buf, uint16_t num)
static inline void static inline void
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)
*(uint32_t *)buf = num; *(uint32_t *)buf = num;
#else
memcpy(buf, &num, sizeof(num));
#endif
return; return;
} }
@ -254,90 +281,114 @@ write32ne(uint8_t *buf, uint32_t num)
static inline void static inline void
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)
*(uint64_t *)buf = num; *(uint64_t *)buf = num;
#else
memcpy(buf, &num, sizeof(num));
#endif
return; return;
} }
////////////////////////////////
// Unaligned reads and writes //
////////////////////////////////
// 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 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 = read16ne(buf);
return conv16be(num);
#else
uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1]; uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1];
return num; return num;
#endif
} }
static inline uint16_t 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 = read16ne(buf);
return conv16le(num);
#else
uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8); uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8);
return num; return num;
#endif
} }
static inline uint32_t 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 = read32ne(buf);
return conv32be(num);
#else
uint32_t num = (uint32_t)buf[0] << 24; uint32_t num = (uint32_t)buf[0] << 24;
num |= (uint32_t)buf[1] << 16; num |= (uint32_t)buf[1] << 16;
num |= (uint32_t)buf[2] << 8; num |= (uint32_t)buf[2] << 8;
num |= (uint32_t)buf[3]; num |= (uint32_t)buf[3];
return num; return num;
#endif
} }
static inline uint32_t 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 = read32ne(buf);
return conv32le(num);
#else
uint32_t num = (uint32_t)buf[0]; uint32_t num = (uint32_t)buf[0];
num |= (uint32_t)buf[1] << 8; num |= (uint32_t)buf[1] << 8;
num |= (uint32_t)buf[2] << 16; num |= (uint32_t)buf[2] << 16;
num |= (uint32_t)buf[3] << 24; num |= (uint32_t)buf[3] << 24;
return num; return num;
#endif
} }
// NOTE: Possible byte swapping must be done in a macro to allow the compiler
// to optimize byte swapping of constants when using glibc's or *BSD's
// byte swapping macros. The actual write is done in an inline function
// to make type checking of the buf pointer possible.
#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
# define write16be(buf, num) write16ne(buf, conv16be(num))
# define write32be(buf, num) write32ne(buf, conv32be(num))
#endif
#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
# define write16le(buf, num) write16ne(buf, conv16le(num))
# define write32le(buf, num) write32ne(buf, conv32le(num))
#endif
#ifndef write16be
static inline void 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[0] = (uint8_t)(num >> 8);
buf[1] = (uint8_t)num; buf[1] = (uint8_t)num;
return; return;
} }
#endif
#ifndef write16le
static inline void static inline void
unaligned_write16le(uint8_t *buf, uint16_t num) write16le(uint8_t *buf, uint16_t num)
{ {
buf[0] = (uint8_t)num; buf[0] = (uint8_t)num;
buf[1] = (uint8_t)(num >> 8); buf[1] = (uint8_t)(num >> 8);
return; return;
} }
#endif
#ifndef write32be
static inline void 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[0] = (uint8_t)(num >> 24);
buf[1] = (uint8_t)(num >> 16); buf[1] = (uint8_t)(num >> 16);
@ -345,10 +396,12 @@ unaligned_write32be(uint8_t *buf, uint32_t num)
buf[3] = (uint8_t)num; buf[3] = (uint8_t)num;
return; return;
} }
#endif
#ifndef write32le
static inline void static inline void
unaligned_write32le(uint8_t *buf, uint32_t num) write32le(uint8_t *buf, uint32_t num)
{ {
buf[0] = (uint8_t)num; buf[0] = (uint8_t)num;
buf[1] = (uint8_t)(num >> 8); buf[1] = (uint8_t)(num >> 8);
@ -356,10 +409,184 @@ unaligned_write32le(uint8_t *buf, uint32_t num)
buf[3] = (uint8_t)(num >> 24); buf[3] = (uint8_t)(num >> 24);
return; return;
} }
#endif #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
aligned_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
aligned_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
aligned_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
aligned_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
aligned_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
aligned_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
aligned_read16be(const uint8_t *buf)
{
uint16_t num = aligned_read16ne(buf);
return conv16be(num);
}
static inline uint16_t
aligned_read16le(const uint8_t *buf)
{
uint16_t num = aligned_read16ne(buf);
return conv16le(num);
}
static inline uint32_t
aligned_read32be(const uint8_t *buf)
{
uint32_t num = aligned_read32ne(buf);
return conv32be(num);
}
static inline uint32_t
aligned_read32le(const uint8_t *buf)
{
uint32_t num = aligned_read32ne(buf);
return conv32le(num);
}
static inline uint64_t
aligned_read64be(const uint8_t *buf)
{
uint64_t num = aligned_read64ne(buf);
return conv64be(num);
}
static inline uint64_t
aligned_read64le(const uint8_t *buf)
{
uint64_t num = aligned_read64ne(buf);
return conv64le(num);
}
// These need to be macros like in the unaligned case.
#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))
////////////////////
// Bit operations //
////////////////////
static inline uint32_t static inline uint32_t
bsr32(uint32_t n) bsr32(uint32_t n)
{ {
@ -367,49 +594,47 @@ bsr32(uint32_t n)
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
return _bit_scan_reverse(n); return _bit_scan_reverse(n);
#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX == UINT32_MAX #elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX == UINT32_MAX
// GCC >= 3.4 has __builtin_clz(), which gives good results on // GCC >= 3.4 has __builtin_clz(), which gives good results on
// multiple architectures. On x86, __builtin_clz() ^ 31U becomes // multiple architectures. On x86, __builtin_clz() ^ 31U becomes
// either plain BSR (so the XOR gets optimized away) or LZCNT and // either plain BSR (so the XOR gets optimized away) or LZCNT and
// XOR (if -march indicates that SSE4a instructions are supported). // 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__)) #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
uint32_t i; uint32_t i;
__asm__("bsrl %1, %0" : "=r" (i) : "rm" (n)); __asm__("bsrl %1, %0" : "=r" (i) : "rm" (n));
return i; return i;
#elif defined(_MSC_VER) && _MSC_VER >= 1400 #elif defined(_MSC_VER)
// MSVC isn't supported by tuklib, but since this code exists, unsigned long i;
// it doesn't hurt to have it here anyway. _BitScanReverse(&i, n);
uint32_t i;
_BitScanReverse((DWORD *)&i, n);
return i; return i;
#else #else
uint32_t i = 31; uint32_t i = 31;
if ((n & UINT32_C(0xFFFF0000)) == 0) { if ((n & 0xFFFF0000) == 0) {
n <<= 16; n <<= 16;
i = 15; i = 15;
} }
if ((n & UINT32_C(0xFF000000)) == 0) { if ((n & 0xFF000000) == 0) {
n <<= 8; n <<= 8;
i -= 8; i -= 8;
} }
if ((n & UINT32_C(0xF0000000)) == 0) { if ((n & 0xF0000000) == 0) {
n <<= 4; n <<= 4;
i -= 4; i -= 4;
} }
if ((n & UINT32_C(0xC0000000)) == 0) { if ((n & 0xC0000000) == 0) {
n <<= 2; n <<= 2;
i -= 2; i -= 2;
} }
if ((n & UINT32_C(0x80000000)) == 0) if ((n & 0x80000000) == 0)
--i; --i;
return i; return i;
@ -423,8 +648,8 @@ clz32(uint32_t n)
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
return _bit_scan_reverse(n) ^ 31U; return _bit_scan_reverse(n) ^ 31U;
#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX == UINT32_MAX #elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX == UINT32_MAX
return __builtin_clz(n); return (uint32_t)__builtin_clz(n);
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
uint32_t i; uint32_t i;
@ -433,35 +658,35 @@ clz32(uint32_t n)
: "=r" (i) : "rm" (n)); : "=r" (i) : "rm" (n));
return i; return i;
#elif defined(_MSC_VER) && _MSC_VER >= 1400 #elif defined(_MSC_VER)
uint32_t i; unsigned long i;
_BitScanReverse((DWORD *)&i, n); _BitScanReverse(&i, n);
return i ^ 31U; return i ^ 31U;
#else #else
uint32_t i = 0; uint32_t i = 0;
if ((n & UINT32_C(0xFFFF0000)) == 0) { if ((n & 0xFFFF0000) == 0) {
n <<= 16; n <<= 16;
i = 16; i = 16;
} }
if ((n & UINT32_C(0xFF000000)) == 0) { if ((n & 0xFF000000) == 0) {
n <<= 8; n <<= 8;
i += 8; i += 8;
} }
if ((n & UINT32_C(0xF0000000)) == 0) { if ((n & 0xF0000000) == 0) {
n <<= 4; n <<= 4;
i += 4; i += 4;
} }
if ((n & UINT32_C(0xC0000000)) == 0) { if ((n & 0xC0000000) == 0) {
n <<= 2; n <<= 2;
i += 2; i += 2;
} }
if ((n & UINT32_C(0x80000000)) == 0) if ((n & 0x80000000) == 0)
++i; ++i;
return i; return i;
@ -475,43 +700,43 @@ ctz32(uint32_t n)
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
return _bit_scan_forward(n); return _bit_scan_forward(n);
#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX >= UINT32_MAX #elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX >= UINT32_MAX
return __builtin_ctz(n); return (uint32_t)__builtin_ctz(n);
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
uint32_t i; uint32_t i;
__asm__("bsfl %1, %0" : "=r" (i) : "rm" (n)); __asm__("bsfl %1, %0" : "=r" (i) : "rm" (n));
return i; return i;
#elif defined(_MSC_VER) && _MSC_VER >= 1400 #elif defined(_MSC_VER)
uint32_t i; unsigned long i;
_BitScanForward((DWORD *)&i, n); _BitScanForward(&i, n);
return i; return i;
#else #else
uint32_t i = 0; uint32_t i = 0;
if ((n & UINT32_C(0x0000FFFF)) == 0) { if ((n & 0x0000FFFF) == 0) {
n >>= 16; n >>= 16;
i = 16; i = 16;
} }
if ((n & UINT32_C(0x000000FF)) == 0) { if ((n & 0x000000FF) == 0) {
n >>= 8; n >>= 8;
i += 8; i += 8;
} }
if ((n & UINT32_C(0x0000000F)) == 0) { if ((n & 0x0000000F) == 0) {
n >>= 4; n >>= 4;
i += 4; i += 4;
} }
if ((n & UINT32_C(0x00000003)) == 0) { if ((n & 0x00000003) == 0) {
n >>= 2; n >>= 2;
i += 2; i += 2;
} }
if ((n & UINT32_C(0x00000001)) == 0) if ((n & 0x00000001) == 0)
++i; ++i;
return i; return i;

View File

@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
/// \file tuklib_mstr.h /// \file tuklib_mbstr.h
/// \brief Utility functions for handling multibyte strings /// \brief Utility functions for handling multibyte strings
/// ///
/// If not enough multibyte string support is available in the C library, /// If not enough multibyte string support is available in the C library,

View File

@ -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 /// \brief Get the field width for printf() e.g. to align table columns
// //
// Author: Lasse Collin // Author: Lasse Collin

View File

@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
/// \file tuklib_mstr_width.c /// \file tuklib_mbstr_width.c
/// \brief Calculate width of a multibyte string /// \brief Calculate width of a multibyte string
// //
// Author: Lasse Collin // Author: Lasse Collin
@ -11,6 +11,7 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#include "tuklib_mbstr.h" #include "tuklib_mbstr.h"
#include <string.h>
#if defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH) #if defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)
# include <wchar.h> # include <wchar.h>
@ -50,7 +51,7 @@ tuklib_mbstr_width(const char *str, size_t *bytes)
if (wc_width < 0) if (wc_width < 0)
return (size_t)-1; return (size_t)-1;
width += wc_width; width += (size_t)wc_width;
} }
// Require that the string ends in the initial shift state. // Require that the string ends in the initial shift state.

View File

@ -73,6 +73,17 @@
#endif #endif
// With GCC >= 8.1 with -Wextra and Clang >= 13 with -Wcast-function-type
// will warn about the Windows-specific code.
#if defined(__has_warning)
# if __has_warning("-Wcast-function-type")
# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
# endif
#elif TUKLIB_GNUC_REQ(8,1)
# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
#endif
extern uint64_t extern uint64_t
tuklib_physmem(void) tuklib_physmem(void)
{ {
@ -84,10 +95,18 @@ tuklib_physmem(void)
// supports reporting values greater than 4 GiB. To keep the // supports reporting values greater than 4 GiB. To keep the
// code working also on older Windows versions, use // code working also on older Windows versions, use
// GlobalMemoryStatusEx() conditionally. // GlobalMemoryStatusEx() conditionally.
HMODULE kernel32 = GetModuleHandle("kernel32.dll"); HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
if (kernel32 != NULL) { if (kernel32 != NULL) {
BOOL (WINAPI *gmse)(LPMEMORYSTATUSEX) = GetProcAddress( typedef BOOL (WINAPI *gmse_type)(LPMEMORYSTATUSEX);
#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wcast-function-type"
#endif
gmse_type gmse = (gmse_type)GetProcAddress(
kernel32, "GlobalMemoryStatusEx"); kernel32, "GlobalMemoryStatusEx");
#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE
# pragma GCC diagnostic pop
#endif
if (gmse != NULL) { if (gmse != NULL) {
MEMORYSTATUSEX meminfo; MEMORYSTATUSEX meminfo;
meminfo.dwLength = sizeof(meminfo); meminfo.dwLength = sizeof(meminfo);

View File

@ -24,12 +24,16 @@ liblzma_la_CPPFLAGS = \
-I$(top_srcdir)/src/liblzma/simple \ -I$(top_srcdir)/src/liblzma/simple \
-I$(top_srcdir)/src/common \ -I$(top_srcdir)/src/common \
-DTUKLIB_SYMBOL_PREFIX=lzma_ -DTUKLIB_SYMBOL_PREFIX=lzma_
liblzma_la_LDFLAGS = -no-undefined -version-info 7:1:2 liblzma_la_LDFLAGS = -no-undefined -version-info 7:12:2
EXTRA_DIST += liblzma.map validate_map.sh EXTRA_DIST += liblzma_generic.map liblzma_linux.map validate_map.sh
if COND_SYMVERS if COND_SYMVERS_GENERIC
liblzma_la_LDFLAGS += \ liblzma_la_LDFLAGS += \
-Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma.map -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_generic.map
endif
if COND_SYMVERS_LINUX
liblzma_la_LDFLAGS += \
-Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_linux.map
endif endif
liblzma_la_SOURCES += ../common/tuklib_physmem.c liblzma_la_SOURCES += ../common/tuklib_physmem.c

View File

@ -7,16 +7,16 @@
* format and raw (no headers) streams are supported. Multiple compression * format and raw (no headers) streams are supported. Multiple compression
* algorithms (filters) are supported. Currently LZMA2 is the primary filter. * algorithms (filters) are supported. Currently LZMA2 is the primary filter.
* *
* liblzma is part of XZ Utils <http://tukaani.org/xz/>. XZ Utils includes * liblzma is part of XZ Utils <https://tukaani.org/xz/>. XZ Utils includes
* a gzip-like command line tool named xz and some other tools. XZ Utils * a gzip-like command line tool named xz and some other tools. XZ Utils
* is developed and maintained by Lasse Collin. * is developed and maintained by Lasse Collin and Jia Tan.
* *
* Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK * Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK
* <http://7-zip.org/sdk.html>. * <https://7-zip.org/sdk.html>.
* *
* The SHA-256 implementation is based on the public domain code found from * The SHA-256 implementation is based on the public domain code found from
* 7-Zip <http://7-zip.org/>, which has a modified version of the public * 7-Zip <https://7-zip.org/>, which has a modified version of the public
* domain SHA-256 code found from Crypto++ <http://www.cryptopp.com/>. * domain SHA-256 code found from Crypto++ <https://www.cryptopp.com/>.
* The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai. * The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai.
*/ */
@ -82,12 +82,20 @@
# if !defined(UINT32_C) || !defined(UINT64_C) \ # if !defined(UINT32_C) || !defined(UINT64_C) \
|| !defined(UINT32_MAX) || !defined(UINT64_MAX) || !defined(UINT32_MAX) || !defined(UINT64_MAX)
/* /*
* MSVC has no C99 support, and thus it cannot be used to * MSVC versions older than 2013 have no C99 support, and
* compile liblzma. The liblzma API has to still be usable * thus they cannot be used to compile liblzma. Using an
* from MSVC, so we need to define the required standard * existing liblzma.dll with old MSVC can work though(*),
* integer types here. * but we need to define the required standard integer
* types here in a MSVC-specific way.
*
* (*) If you do this, the existing liblzma.dll probably uses
* a different runtime library than your MSVC-built
* application. Mixing runtimes is generally bad, but
* in this case it should work as long as you avoid
* the few rarely-needed liblzma functions that allocate
* memory and expect the caller to free it using free().
*/ */
# if defined(_WIN32) && defined(_MSC_VER) # if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1800
typedef unsigned __int8 uint8_t; typedef unsigned __int8 uint8_t;
typedef unsigned __int32 uint32_t; typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t; typedef unsigned __int64 uint64_t;
@ -211,8 +219,14 @@
*/ */
#ifndef lzma_nothrow #ifndef lzma_nothrow
# if defined(__cplusplus) # if defined(__cplusplus)
# define lzma_nothrow throw() # if __cplusplus >= 201103L || (defined(_MSVC_LANG) \
# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) && _MSVC_LANG >= 201103L)
# define lzma_nothrow noexcept
# else
# define lzma_nothrow throw()
# endif
# elif defined(__GNUC__) && (__GNUC__ > 3 \
|| (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
# define lzma_nothrow __attribute__((__nothrow__)) # define lzma_nothrow __attribute__((__nothrow__))
# else # else
# define lzma_nothrow # define lzma_nothrow
@ -229,7 +243,7 @@
* break anything if these are sometimes enabled and sometimes not, only * break anything if these are sometimes enabled and sometimes not, only
* affects warnings and optimizations. * affects warnings and optimizations.
*/ */
#if __GNUC__ >= 3 #if defined(__GNUC__) && __GNUC__ >= 3
# ifndef lzma_attribute # ifndef lzma_attribute
# define lzma_attribute(attr) __attribute__(attr) # define lzma_attribute(attr) __attribute__(attr)
# endif # endif

View File

@ -138,13 +138,19 @@ typedef enum {
*/ */
LZMA_MEMLIMIT_ERROR = 6, LZMA_MEMLIMIT_ERROR = 6,
/** /**<
* \brief Memory usage limit was reached * \brief Memory usage limit was reached
* *
* Decoder would need more memory than allowed by the * Decoder would need more memory than allowed by the
* specified memory usage limit. To continue decoding, * specified memory usage limit. To continue decoding,
* the memory usage limit has to be increased with * the memory usage limit has to be increased with
* lzma_memlimit_set(). * lzma_memlimit_set().
*
* liblzma 5.2.6 and earlier had a bug in single-threaded .xz
* decoder (lzma_stream_decoder()) which made it impossible
* to continue decoding after LZMA_MEMLIMIT_ERROR even if
* the limit was increased using lzma_memlimit_set().
* Other decoders worked correctly.
*/ */
LZMA_FORMAT_ERROR = 7, LZMA_FORMAT_ERROR = 7,
@ -447,7 +453,7 @@ typedef struct lzma_internal_s lzma_internal;
* *
* The lzma_stream structure is used for * The lzma_stream structure is used for
* - passing pointers to input and output buffers to liblzma; * - passing pointers to input and output buffers to liblzma;
* - defining custom memory hander functions; and * - defining custom memory handler functions; and
* - holding a pointer to coder-specific internal data structures. * - holding a pointer to coder-specific internal data structures.
* *
* Typical usage: * Typical usage:
@ -644,11 +650,21 @@ extern LZMA_API(uint64_t) lzma_memlimit_get(const lzma_stream *strm)
* This function is supported only when *strm has been initialized with * This function is supported only when *strm has been initialized with
* a function that takes a memlimit argument. * 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).
*
* liblzma 5.2.6 and earlier had a bug in single-threaded .xz decoder
* (lzma_stream_decoder()) which made it impossible to continue decoding
* after LZMA_MEMLIMIT_ERROR even if the limit was increased using
* lzma_memlimit_set(). Other decoders worked correctly.
*
* \return - LZMA_OK: New memory usage limit successfully set. * \return - LZMA_OK: New memory usage limit successfully set.
* - LZMA_MEMLIMIT_ERROR: The new limit is too small. * - LZMA_MEMLIMIT_ERROR: The new limit is too small.
* The limit was not changed. * The limit was not changed.
* - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't * - 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( extern LZMA_API(lzma_ret) lzma_memlimit_set(
lzma_stream *strm, uint64_t memlimit) lzma_nothrow; lzma_stream *strm, uint64_t memlimit) lzma_nothrow;

View File

@ -448,7 +448,7 @@ extern LZMA_API(lzma_vli) lzma_block_total_size(const lzma_block *block)
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
* - LZMA_OPTIONS_ERROR * - LZMA_OPTIONS_ERROR
* - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID * - 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. * the encoder failed.
* - LZMA_PROG_ERROR * - LZMA_PROG_ERROR
*/ */
@ -464,9 +464,6 @@ extern LZMA_API(lzma_ret) lzma_block_encoder(
* LZMA_FINISH is not required. It is supported only for convenience. * LZMA_FINISH is not required. It is supported only for convenience.
* *
* \return - LZMA_OK: All good, continue with lzma_code(). * \return - LZMA_OK: All good, continue with lzma_code().
* - LZMA_UNSUPPORTED_CHECK: Initialization was successful, but
* the given Check ID is not supported, thus Check will be
* ignored.
* - LZMA_PROG_ERROR * - LZMA_PROG_ERROR
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
*/ */

View File

@ -520,10 +520,14 @@ extern LZMA_API(lzma_ret) lzma_stream_buffer_encode(
* *
* \param strm Pointer to properly prepared lzma_stream * \param strm Pointer to properly prepared lzma_stream
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX * \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: * \param flags Bitwise-or of zero or more of the decoder flags:
* LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK,
* LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED * LZMA_TELL_ANY_CHECK, LZMA_IGNORE_CHECK,
* LZMA_CONCATENATED
* *
* \return - LZMA_OK: Initialization was successful. * \return - LZMA_OK: Initialization was successful.
* - LZMA_MEM_ERROR: Cannot allocate memory. * - LZMA_MEM_ERROR: Cannot allocate memory.
@ -542,10 +546,23 @@ extern LZMA_API(lzma_ret) lzma_stream_decoder(
* calls lzma_stream_decoder() or lzma_alone_decoder() once the type * calls lzma_stream_decoder() or lzma_alone_decoder() once the type
* of the input file has been detected. * of the input file has been detected.
* *
* If the flag LZMA_CONCATENATED is used and the input is a .lzma file:
* For historical reasons concatenated .lzma files aren't supported.
* If there is trailing data after one .lzma stream, lzma_code() will
* return LZMA_DATA_ERROR. (lzma_alone_decoder() doesn't have such a check
* as it doesn't support any decoder flags. It will return LZMA_STREAM_END
* after one .lzma stream.)
*
* \param strm Pointer to properly prepared lzma_stream * \param strm Pointer to properly prepared lzma_stream
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX * \param memlimit Memory usage limit as bytes. Use UINT64_MAX
* to effectively disable the limiter. * to effectively disable the limiter. liblzma
* \param flags Bitwise-or of flags, or zero for no flags. * 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_IGNORE_CHECK,
* LZMA_CONCATENATED
* *
* \return - LZMA_OK: Initialization was successful. * \return - LZMA_OK: Initialization was successful.
* - LZMA_MEM_ERROR: Cannot allocate memory. * - LZMA_MEM_ERROR: Cannot allocate memory.
@ -560,9 +577,16 @@ extern LZMA_API(lzma_ret) lzma_auto_decoder(
/** /**
* \brief Initialize .lzma decoder (legacy file format) * \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. * 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 * There is no need to use LZMA_FINISH, but it's allowed because it may
* certain types of applications. * simplify certain types of applications.
* *
* \return - LZMA_OK * \return - LZMA_OK
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
@ -582,8 +606,9 @@ extern LZMA_API(lzma_ret) lzma_alone_decoder(
* returned. * returned.
* \param flags Bitwise-or of zero or more of the decoder flags: * \param flags Bitwise-or of zero or more of the decoder flags:
* LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK,
* LZMA_CONCATENATED. Note that LZMA_TELL_ANY_CHECK * LZMA_IGNORE_CHECK, LZMA_CONCATENATED. Note that
* is not allowed and will return LZMA_PROG_ERROR. * LZMA_TELL_ANY_CHECK is not allowed and will
* return LZMA_PROG_ERROR.
* \param allocator lzma_allocator for custom allocator functions. * \param allocator lzma_allocator for custom allocator functions.
* Set to NULL to use malloc() and free(). * Set to NULL to use malloc() and free().
* \param in Beginning of the input buffer * \param in Beginning of the input buffer

View File

@ -108,7 +108,9 @@ extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id)
* need to be initialized by the caller in any way. * need to be initialized by the caller in any way.
* *
* If an error occurs, memory possibly already allocated by this function * If an error occurs, memory possibly already allocated by this function
* is always freed. * is always freed. liblzma versions older than 5.2.7 may modify the dest
* array and leave its contents in an undefined state if an error occurs.
* liblzma 5.2.7 and newer only modify the dest array when returning LZMA_OK.
* *
* \return - LZMA_OK * \return - LZMA_OK
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
@ -118,7 +120,8 @@ extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id)
*/ */
extern LZMA_API(lzma_ret) lzma_filters_copy( extern LZMA_API(lzma_ret) lzma_filters_copy(
const lzma_filter *src, lzma_filter *dest, const lzma_filter *src, lzma_filter *dest,
const lzma_allocator *allocator) lzma_nothrow; const lzma_allocator *allocator)
lzma_nothrow lzma_attr_warn_unused_result;
/** /**
@ -341,9 +344,10 @@ extern LZMA_API(lzma_ret) lzma_properties_encode(
* \param filter filter->id must have been set to the correct * \param filter filter->id must have been set to the correct
* Filter ID. filter->options doesn't need to be * Filter ID. filter->options doesn't need to be
* initialized (it's not freed by this function). The * initialized (it's not freed by this function). The
* decoded options will be stored to filter->options. * decoded options will be stored in filter->options;
* filter->options is set to NULL if there are no * it's application's responsibility to free it when
* properties or if an error occurs. * 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 * \param allocator Custom memory allocator used to allocate the
* options. Set to NULL to use the default malloc(), * options. Set to NULL to use the default malloc(),
* and in case of an error, also free(). * and in case of an error, also free().

View File

@ -6,7 +6,7 @@
* ways to limit the resource usage. Applications linking against liblzma * ways to limit the resource usage. Applications linking against liblzma
* need to do the actual decisions how much resources to let liblzma to use. * 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 * 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 * 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 * will be also a function to detect how many concurrent threads the system
* can run. * can run.
@ -57,7 +57,7 @@ extern LZMA_API(uint64_t) lzma_physmem(void) lzma_nothrow;
* If the hardware supports more than one thread per CPU core, the number * If the hardware supports more than one thread per CPU core, the number
* of hardware threads is returned if that information is available. * of hardware threads is returned if that information is available.
* *
* \brief On success, the number of available CPU threads or cores is * \return On success, the number of available CPU threads or cores is
* returned. If this information isn't available or an error * returned. If this information isn't available or an error
* occurs, zero is returned. * occurs, zero is returned.
*/ */

View File

@ -586,8 +586,7 @@ extern LZMA_API(lzma_index *) lzma_index_dup(
* \param i Pointer to lzma_index which should be encoded. * \param i Pointer to lzma_index which should be encoded.
* *
* The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. * 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 * It is enough to use only one of them (you can choose freely).
* to support liblzma versions older than 5.0.0).
* *
* \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). * \return - LZMA_OK: Initialization succeeded, continue with lzma_code().
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
@ -610,16 +609,21 @@ extern LZMA_API(lzma_ret) lzma_index_encoder(
* to a new lzma_index, which the application * to a new lzma_index, which the application
* has to later free with lzma_index_end(). * has to later free with lzma_index_end().
* \param memlimit How much memory the resulting lzma_index is * \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. * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
* It is enough to use only one of them (you can choose freely; use LZMA_RUN * There is no need to use LZMA_FINISH, but it's allowed because it may
* to support liblzma versions older than 5.0.0). * simplify certain types of applications.
* *
* \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). * \return - LZMA_OK: Initialization succeeded, continue with lzma_code().
* - LZMA_MEM_ERROR * - LZMA_MEM_ERROR
* - LZMA_MEMLIMIT_ERROR
* - LZMA_PROG_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( extern LZMA_API(lzma_ret) lzma_index_decoder(
lzma_stream *strm, lzma_index **i, uint64_t memlimit) lzma_stream *strm, lzma_index **i, uint64_t memlimit)

View File

@ -52,7 +52,7 @@ extern LZMA_API(void) lzma_index_hash_end(
/** /**
* \brief Add a new Record to an Index hash * \brief Add a new Record to an Index hash
* *
* \param index Pointer to a lzma_index_hash structure * \param index_hash Pointer to a lzma_index_hash structure
* \param unpadded_size Unpadded Size of a Block * \param unpadded_size Unpadded Size of a Block
* \param uncompressed_size Uncompressed Size of a Block * \param uncompressed_size Uncompressed Size of a Block
* *

View File

@ -301,7 +301,7 @@ typedef struct {
* (2^ pb =2^2=4), which is often a good choice when there's * (2^ pb =2^2=4), which is often a good choice when there's
* no better guess. * 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 * the file size a little. E.g. with text files having one-byte
* alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can * alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can
* improve compression slightly. For UTF-16 text, pb=1 is a good * improve compression slightly. For UTF-16 text, pb=1 is a good

View File

@ -22,7 +22,7 @@
*/ */
#define LZMA_VERSION_MAJOR 5 #define LZMA_VERSION_MAJOR 5
#define LZMA_VERSION_MINOR 2 #define LZMA_VERSION_MINOR 2
#define LZMA_VERSION_PATCH 1 #define LZMA_VERSION_PATCH 12
#define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE #define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE
#ifndef LZMA_VERSION_COMMIT #ifndef LZMA_VERSION_COMMIT

View File

@ -54,7 +54,7 @@
* *
* Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is * 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 * 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 * 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 * is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will
@ -159,6 +159,8 @@ extern LZMA_API(lzma_ret) lzma_vli_decode(lzma_vli *vli, size_t *vli_pos,
/** /**
* \brief Get the number of bytes required to encode a VLI * \brief Get the number of bytes required to encode a VLI
* *
* \param vli Integer whose encoded size is to be determined
*
* \return Number of bytes on success (1-9). If vli isn't valid, * \return Number of bytes on success (1-9). If vli isn't valid,
* zero is returned. * zero is returned.
*/ */

View File

@ -15,7 +15,18 @@
#include "common.h" #include "common.h"
#if defined(HAVE_COMMONCRYPTO_COMMONDIGEST_H) // If the function for external SHA-256 is missing, use the internal SHA-256
// code. Due to how configure works, these defines can only get defined when
// both a usable header and a type have already been found.
#if !(defined(HAVE_CC_SHA256_INIT) \
|| defined(HAVE_SHA256_INIT) \
|| defined(HAVE_SHA256INIT))
# define HAVE_INTERNAL_SHA256 1
#endif
#if defined(HAVE_INTERNAL_SHA256)
// Nothing
#elif defined(HAVE_COMMONCRYPTO_COMMONDIGEST_H)
# include <CommonCrypto/CommonDigest.h> # include <CommonCrypto/CommonDigest.h>
#elif defined(HAVE_SHA256_H) #elif defined(HAVE_SHA256_H)
# include <sys/types.h> # include <sys/types.h>
@ -23,18 +34,9 @@
#elif defined(HAVE_SHA2_H) #elif defined(HAVE_SHA2_H)
# include <sys/types.h> # include <sys/types.h>
# include <sha2.h> # include <sha2.h>
#elif defined(HAVE_MINIX_SHA2_H)
# include <sys/types.h>
# include <minix/sha2.h>
#endif #endif
#if defined(HAVE_CC_SHA256_CTX) #if defined(HAVE_INTERNAL_SHA256)
typedef CC_SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA256_CTX)
typedef SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA2_CTX)
typedef SHA2_CTX lzma_sha256_state;
#else
/// State for the internal SHA-256 implementation /// State for the internal SHA-256 implementation
typedef struct { typedef struct {
/// Internal state /// Internal state
@ -43,9 +45,17 @@ typedef struct {
/// Size of the message excluding padding /// Size of the message excluding padding
uint64_t size; uint64_t size;
} lzma_sha256_state; } lzma_sha256_state;
#elif defined(HAVE_CC_SHA256_CTX)
typedef CC_SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA256_CTX)
typedef SHA256_CTX lzma_sha256_state;
#elif defined(HAVE_SHA2_CTX)
typedef SHA2_CTX lzma_sha256_state;
#endif #endif
#if defined(HAVE_CC_SHA256_INIT) #if defined(HAVE_INTERNAL_SHA256)
// Nothing
#elif defined(HAVE_CC_SHA256_INIT)
# define LZMA_SHA256FUNC(x) CC_SHA256_ ## x # define LZMA_SHA256FUNC(x) CC_SHA256_ ## x
#elif defined(HAVE_SHA256_INIT) #elif defined(HAVE_SHA256_INIT)
# define LZMA_SHA256FUNC(x) SHA256_ ## x # define LZMA_SHA256FUNC(x) SHA256_ ## x
@ -98,10 +108,6 @@ extern const uint64_t lzma_crc64_table[4][256];
/// \brief Initialize *check depending on type /// \brief Initialize *check depending on type
///
/// \return LZMA_OK on success. LZMA_UNSUPPORTED_CHECK if the type is not
/// supported by the current version or build of liblzma.
/// LZMA_PROG_ERROR if type > LZMA_CHECK_ID_MAX.
extern void lzma_check_init(lzma_check_state *check, lzma_check type); extern void lzma_check_init(lzma_check_state *check, lzma_check type);
/// Update the check state /// Update the check state

View File

@ -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. // Calculate the CRC32 using the slice-by-eight algorithm.
while (buf < limit) { while (buf < limit) {
crc ^= *(const uint32_t *)(buf); crc ^= aligned_read32ne(buf);
buf += 4; buf += 4;
crc = lzma_crc32_table[7][A(crc)] 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[5][C(crc)]
^ lzma_crc32_table[4][D(crc)]; ^ lzma_crc32_table[4][D(crc)];
const uint32_t tmp = *(const uint32_t *)(buf); const uint32_t tmp = aligned_read32ne(buf);
buf += 4; buf += 4;
// At least with some compilers, it is critical for // At least with some compilers, it is critical for

View File

@ -12,6 +12,9 @@
#include "common.h" #include "common.h"
// Having the declaration here silences clang -Wmissing-variable-declarations.
extern const uint32_t lzma_crc32_table[8][256];
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
# include "crc32_table_be.h" # include "crc32_table_be.h"
#else #else

View File

@ -51,6 +51,14 @@ init_table(void)
* extern uint32_t lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc); * extern uint32_t lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc);
*/ */
/* When Intel CET is enabled, include <cet.h> in assembly code to mark
Intel CET support. */
#ifdef __CET__
# include <cet.h>
#else
# define _CET_ENDBR
#endif
/* /*
* On some systems, the functions need to be prefixed. The prefix is * On some systems, the functions need to be prefixed. The prefix is
* usually an underscore. * usually an underscore.
@ -83,6 +91,7 @@ init_table(void)
ALIGN(4, 16) ALIGN(4, 16)
LZMA_CRC32: LZMA_CRC32:
_CET_ENDBR
/* /*
* Register usage: * Register usage:
* %eax crc * %eax crc
@ -195,7 +204,7 @@ LZMA_CRC32:
/* /*
* Read the next four bytes, for which the CRC is calculated * Read the next four bytes, for which the CRC is calculated
* on the next interation of the loop. * on the next iteration of the loop.
*/ */
movl 12(%esi), %ecx movl 12(%esi), %ecx
@ -296,9 +305,9 @@ LZMA_CRC32:
/* /*
* This is needed to support non-executable stack. It's ugly to * This is needed to support non-executable stack. It's ugly to
* use __linux__ here, but I don't know a way to detect when * use __FreeBSD__ and __linux__ here, but I don't know a way to detect when
* we are using GNU assembler. * we are using GNU assembler.
*/ */
#if defined(__ELF__) && defined(__linux__) #if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__))
.section .note.GNU-stack,"",@progbits .section .note.GNU-stack,"",@progbits
#endif #endif

View File

@ -47,9 +47,9 @@ lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc)
while (buf < limit) { while (buf < limit) {
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
const uint32_t tmp = (crc >> 32) const uint32_t tmp = (crc >> 32)
^ *(const uint32_t *)(buf); ^ aligned_read32ne(buf);
#else #else
const uint32_t tmp = crc ^ *(const uint32_t *)(buf); const uint32_t tmp = crc ^ aligned_read32ne(buf);
#endif #endif
buf += 4; buf += 4;

View File

@ -12,6 +12,9 @@
#include "common.h" #include "common.h"
// Having the declaration here silences clang -Wmissing-variable-declarations.
extern const uint64_t lzma_crc64_table[4][256];
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
# include "crc64_table_be.h" # include "crc64_table_be.h"
#else #else

View File

@ -41,6 +41,14 @@ init_table(void)
* extern uint64_t lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc); * extern uint64_t lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc);
*/ */
/* When Intel CET is enabled, include <cet.h> in assembly code to mark
Intel CET support. */
#ifdef __CET__
# include <cet.h>
#else
# define _CET_ENDBR
#endif
/* /*
* On some systems, the functions need to be prefixed. The prefix is * On some systems, the functions need to be prefixed. The prefix is
* usually an underscore. * usually an underscore.
@ -73,6 +81,7 @@ init_table(void)
ALIGN(4, 16) ALIGN(4, 16)
LZMA_CRC64: LZMA_CRC64:
_CET_ENDBR
/* /*
* Register usage: * Register usage:
* %eax crc LSB * %eax crc LSB
@ -279,9 +288,9 @@ LZMA_CRC64:
/* /*
* This is needed to support non-executable stack. It's ugly to * This is needed to support non-executable stack. It's ugly to
* use __linux__ here, but I don't know a way to detect when * use __FreeBSD__ and __linux__ here, but I don't know a way to detect when
* we are using GNU assembler. * we are using GNU assembler.
*/ */
#if defined(__ELF__) && defined(__linux__) #if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__))
.section .note.GNU-stack,"",@progbits .section .note.GNU-stack,"",@progbits
#endif #endif

View File

@ -8,7 +8,7 @@
/// conditionally to keep the code working on older boxes. /// conditionally to keep the code working on older boxes.
// //
// This code is based on the code found from 7-Zip, which has a modified // This code is based on the code found from 7-Zip, which has a modified
// version of the SHA-256 found from Crypto++ <http://www.cryptopp.com/>. // version of the SHA-256 found from Crypto++ <https://www.cryptopp.com/>.
// The code was modified a little to fit into liblzma. // The code was modified a little to fit into liblzma.
// //
// Authors: Kevin Springle // Authors: Kevin Springle

View File

@ -21,6 +21,10 @@ liblzma_la_SOURCES += \
common/stream_flags_common.h \ common/stream_flags_common.h \
common/vli_size.c common/vli_size.c
if COND_THREADS
liblzma_la_SOURCES += common/hardware_cputhreads.c
endif
if COND_MAIN_ENCODER if COND_MAIN_ENCODER
liblzma_la_SOURCES += \ liblzma_la_SOURCES += \
common/alone_encoder.c \ common/alone_encoder.c \
@ -45,7 +49,6 @@ liblzma_la_SOURCES += \
if COND_THREADS if COND_THREADS
liblzma_la_SOURCES += \ liblzma_la_SOURCES += \
common/hardware_cputhreads.c \
common/outqueue.c \ common/outqueue.c \
common/outqueue.h \ common/outqueue.h \
common/stream_encoder_mt.c common/stream_encoder_mt.c

View File

@ -15,7 +15,7 @@
#include "lz_decoder.h" #include "lz_decoder.h"
struct lzma_coder_s { typedef struct {
lzma_next_coder next; lzma_next_coder next;
enum { enum {
@ -46,17 +46,18 @@ struct lzma_coder_s {
/// Options decoded from the header needed to initialize /// Options decoded from the header needed to initialize
/// the LZMA decoder /// the LZMA decoder
lzma_options_lzma options; lzma_options_lzma options;
}; } lzma_alone_coder;
static lzma_ret static lzma_ret
alone_decode(lzma_coder *coder, alone_decode(void *coder_ptr, const lzma_allocator *allocator,
const lzma_allocator *allocator lzma_attribute((__unused__)),
const uint8_t *restrict in, size_t *restrict in_pos, const uint8_t *restrict in, size_t *restrict in_pos,
size_t in_size, uint8_t *restrict out, size_t in_size, uint8_t *restrict out,
size_t *restrict out_pos, size_t out_size, size_t *restrict out_pos, size_t out_size,
lzma_action action) lzma_action action)
{ {
lzma_alone_coder *coder = coder_ptr;
while (*out_pos < out_size while (*out_pos < out_size
&& (coder->sequence == SEQ_CODE || *in_pos < in_size)) && (coder->sequence == SEQ_CODE || *in_pos < in_size))
switch (coder->sequence) { switch (coder->sequence) {
@ -145,7 +146,7 @@ alone_decode(lzma_coder *coder,
// Use a hack to set the uncompressed size. // Use a hack to set the uncompressed size.
lzma_lz_decoder_uncompressed(coder->next.coder, lzma_lz_decoder_uncompressed(coder->next.coder,
coder->uncompressed_size); coder->uncompressed_size, true);
coder->sequence = SEQ_CODE; coder->sequence = SEQ_CODE;
break; break;
@ -166,8 +167,9 @@ alone_decode(lzma_coder *coder,
static void static void
alone_decoder_end(lzma_coder *coder, const lzma_allocator *allocator) alone_decoder_end(void *coder_ptr, const lzma_allocator *allocator)
{ {
lzma_alone_coder *coder = coder_ptr;
lzma_next_end(&coder->next, allocator); lzma_next_end(&coder->next, allocator);
lzma_free(coder, allocator); lzma_free(coder, allocator);
return; return;
@ -175,9 +177,11 @@ alone_decoder_end(lzma_coder *coder, const lzma_allocator *allocator)
static lzma_ret static lzma_ret
alone_decoder_memconfig(lzma_coder *coder, uint64_t *memusage, alone_decoder_memconfig(void *coder_ptr, uint64_t *memusage,
uint64_t *old_memlimit, uint64_t new_memlimit) uint64_t *old_memlimit, uint64_t new_memlimit)
{ {
lzma_alone_coder *coder = coder_ptr;
*memusage = coder->memusage; *memusage = coder->memusage;
*old_memlimit = coder->memlimit; *old_memlimit = coder->memlimit;
@ -198,29 +202,29 @@ lzma_alone_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
{ {
lzma_next_coder_init(&lzma_alone_decoder_init, next, allocator); lzma_next_coder_init(&lzma_alone_decoder_init, next, allocator);
if (memlimit == 0) lzma_alone_coder *coder = next->coder;
return LZMA_PROG_ERROR;
if (next->coder == NULL) { if (coder == NULL) {
next->coder = lzma_alloc(sizeof(lzma_coder), allocator); coder = lzma_alloc(sizeof(lzma_alone_coder), allocator);
if (next->coder == NULL) if (coder == NULL)
return LZMA_MEM_ERROR; return LZMA_MEM_ERROR;
next->coder = coder;
next->code = &alone_decode; next->code = &alone_decode;
next->end = &alone_decoder_end; next->end = &alone_decoder_end;
next->memconfig = &alone_decoder_memconfig; next->memconfig = &alone_decoder_memconfig;
next->coder->next = LZMA_NEXT_CODER_INIT; coder->next = LZMA_NEXT_CODER_INIT;
} }
next->coder->sequence = SEQ_PROPERTIES; coder->sequence = SEQ_PROPERTIES;
next->coder->picky = picky; coder->picky = picky;
next->coder->pos = 0; coder->pos = 0;
next->coder->options.dict_size = 0; coder->options.dict_size = 0;
next->coder->options.preset_dict = NULL; coder->options.preset_dict = NULL;
next->coder->options.preset_dict_size = 0; coder->options.preset_dict_size = 0;
next->coder->uncompressed_size = 0; coder->uncompressed_size = 0;
next->coder->memlimit = memlimit; coder->memlimit = my_max(1, memlimit);
next->coder->memusage = LZMA_MEMUSAGE_BASE; coder->memusage = LZMA_MEMUSAGE_BASE;
return LZMA_OK; return LZMA_OK;
} }

View File

@ -1,7 +1,7 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// //
/// \file alone_decoder.c /// \file alone_encoder.c
/// \brief Decoder for LZMA_Alone files /// \brief Encoder for LZMA_Alone files
// //
// Author: Lasse Collin // Author: Lasse Collin
// //
@ -17,7 +17,7 @@
#define ALONE_HEADER_SIZE (1 + 4 + 8) #define ALONE_HEADER_SIZE (1 + 4 + 8)
struct lzma_coder_s { typedef struct {
lzma_next_coder next; lzma_next_coder next;
enum { enum {
@ -27,17 +27,18 @@ struct lzma_coder_s {
size_t header_pos; size_t header_pos;
uint8_t header[ALONE_HEADER_SIZE]; uint8_t header[ALONE_HEADER_SIZE];
}; } lzma_alone_coder;
static lzma_ret static lzma_ret
alone_encode(lzma_coder *coder, alone_encode(void *coder_ptr, const lzma_allocator *allocator,
const lzma_allocator *allocator lzma_attribute((__unused__)),
const uint8_t *restrict in, size_t *restrict in_pos, const uint8_t *restrict in, size_t *restrict in_pos,
size_t in_size, uint8_t *restrict out, size_t in_size, uint8_t *restrict out,
size_t *restrict out_pos, size_t out_size, size_t *restrict out_pos, size_t out_size,
lzma_action action) lzma_action action)
{ {
lzma_alone_coder *coder = coder_ptr;
while (*out_pos < out_size) while (*out_pos < out_size)
switch (coder->sequence) { switch (coder->sequence) {
case SEQ_HEADER: case SEQ_HEADER:
@ -65,38 +66,41 @@ alone_encode(lzma_coder *coder,
static void static void
alone_encoder_end(lzma_coder *coder, const lzma_allocator *allocator) alone_encoder_end(void *coder_ptr, const lzma_allocator *allocator)
{ {
lzma_alone_coder *coder = coder_ptr;
lzma_next_end(&coder->next, allocator); lzma_next_end(&coder->next, allocator);
lzma_free(coder, allocator); lzma_free(coder, allocator);
return; return;
} }
// At least for now, this is not used by any internal function.
static lzma_ret static lzma_ret
alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator, alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_options_lzma *options) const lzma_options_lzma *options)
{ {
lzma_next_coder_init(&alone_encoder_init, next, allocator); lzma_next_coder_init(&alone_encoder_init, next, allocator);
if (next->coder == NULL) { lzma_alone_coder *coder = next->coder;
next->coder = lzma_alloc(sizeof(lzma_coder), allocator);
if (next->coder == NULL) if (coder == NULL) {
coder = lzma_alloc(sizeof(lzma_alone_coder), allocator);
if (coder == NULL)
return LZMA_MEM_ERROR; return LZMA_MEM_ERROR;
next->coder = coder;
next->code = &alone_encode; next->code = &alone_encode;
next->end = &alone_encoder_end; next->end = &alone_encoder_end;
next->coder->next = LZMA_NEXT_CODER_INIT; coder->next = LZMA_NEXT_CODER_INIT;
} }
// Basic initializations // Basic initializations
next->coder->sequence = SEQ_HEADER; coder->sequence = SEQ_HEADER;
next->coder->header_pos = 0; coder->header_pos = 0;
// Encode the header: // Encode the header:
// - Properties (1 byte) // - Properties (1 byte)
if (lzma_lzma_lclppb_encode(options, next->coder->header)) if (lzma_lzma_lclppb_encode(options, coder->header))
return LZMA_OPTIONS_ERROR; return LZMA_OPTIONS_ERROR;
// - Dictionary size (4 bytes) // - Dictionary size (4 bytes)
@ -116,10 +120,10 @@ alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
if (d != UINT32_MAX) if (d != UINT32_MAX)
++d; ++d;
unaligned_write32le(next->coder->header + 1, d); write32le(coder->header + 1, d);
// - Uncompressed size (always unknown and using EOPM) // - Uncompressed size (always unknown and using EOPM)
memset(next->coder->header + 1 + 4, 0xFF, 8); memset(coder->header + 1 + 4, 0xFF, 8);
// Initialize the LZMA encoder. // Initialize the LZMA encoder.
const lzma_filter_info filters[2] = { const lzma_filter_info filters[2] = {
@ -131,20 +135,10 @@ alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
} }
}; };
return lzma_next_filter_init(&next->coder->next, allocator, filters); return lzma_next_filter_init(&coder->next, allocator, filters);
} }
/*
extern lzma_ret
lzma_alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_options_alone *options)
{
lzma_next_coder_init(&alone_encoder_init, next, allocator, options);
}
*/
extern LZMA_API(lzma_ret) extern LZMA_API(lzma_ret)
lzma_alone_encoder(lzma_stream *strm, const lzma_options_lzma *options) lzma_alone_encoder(lzma_stream *strm, const lzma_options_lzma *options)
{ {

View File

@ -14,7 +14,7 @@
#include "alone_decoder.h" #include "alone_decoder.h"
struct lzma_coder_s { typedef struct {
/// Stream decoder or LZMA_Alone decoder /// Stream decoder or LZMA_Alone decoder
lzma_next_coder next; lzma_next_coder next;
@ -26,15 +26,17 @@ struct lzma_coder_s {
SEQ_CODE, SEQ_CODE,
SEQ_FINISH, SEQ_FINISH,
} sequence; } sequence;
}; } lzma_auto_coder;
static lzma_ret static lzma_ret
auto_decode(lzma_coder *coder, const lzma_allocator *allocator, auto_decode(void *coder_ptr, const lzma_allocator *allocator,
const uint8_t *restrict in, size_t *restrict in_pos, const uint8_t *restrict in, size_t *restrict in_pos,
size_t in_size, uint8_t *restrict out, size_t in_size, uint8_t *restrict out,
size_t *restrict out_pos, size_t out_size, lzma_action action) size_t *restrict out_pos, size_t out_size, lzma_action action)
{ {
lzma_auto_coder *coder = coder_ptr;
switch (coder->sequence) { switch (coder->sequence) {
case SEQ_INIT: case SEQ_INIT:
if (*in_pos >= in_size) if (*in_pos >= in_size)
@ -84,8 +86,8 @@ auto_decode(lzma_coder *coder, const lzma_allocator *allocator,
// Fall through // Fall through
case SEQ_FINISH: case SEQ_FINISH:
// When LZMA_DECODE_CONCATENATED was used and we were decoding // When LZMA_CONCATENATED was used and we were decoding
// LZMA_Alone file, we need to check check that there is no // a LZMA_Alone file, we need to check that there is no
// trailing garbage and wait for LZMA_FINISH. // trailing garbage and wait for LZMA_FINISH.
if (*in_pos < in_size) if (*in_pos < in_size)
return LZMA_DATA_ERROR; return LZMA_DATA_ERROR;
@ -100,8 +102,9 @@ auto_decode(lzma_coder *coder, const lzma_allocator *allocator,
static void static void
auto_decoder_end(lzma_coder *coder, const lzma_allocator *allocator) auto_decoder_end(void *coder_ptr, const lzma_allocator *allocator)
{ {
lzma_auto_coder *coder = coder_ptr;
lzma_next_end(&coder->next, allocator); lzma_next_end(&coder->next, allocator);
lzma_free(coder, allocator); lzma_free(coder, allocator);
return; return;
@ -109,8 +112,10 @@ auto_decoder_end(lzma_coder *coder, const lzma_allocator *allocator)
static lzma_check static lzma_check
auto_decoder_get_check(const lzma_coder *coder) auto_decoder_get_check(const void *coder_ptr)
{ {
const lzma_auto_coder *coder = coder_ptr;
// It is LZMA_Alone if get_check is NULL. // It is LZMA_Alone if get_check is NULL.
return coder->next.get_check == NULL ? LZMA_CHECK_NONE return coder->next.get_check == NULL ? LZMA_CHECK_NONE
: coder->next.get_check(coder->next.coder); : coder->next.get_check(coder->next.coder);
@ -118,9 +123,11 @@ auto_decoder_get_check(const lzma_coder *coder)
static lzma_ret static lzma_ret
auto_decoder_memconfig(lzma_coder *coder, uint64_t *memusage, auto_decoder_memconfig(void *coder_ptr, uint64_t *memusage,
uint64_t *old_memlimit, uint64_t new_memlimit) uint64_t *old_memlimit, uint64_t new_memlimit)
{ {
lzma_auto_coder *coder = coder_ptr;
lzma_ret ret; lzma_ret ret;
if (coder->next.memconfig != NULL) { if (coder->next.memconfig != NULL) {
@ -132,7 +139,10 @@ auto_decoder_memconfig(lzma_coder *coder, uint64_t *memusage,
// the current memory usage. // the current memory usage.
*memusage = LZMA_MEMUSAGE_BASE; *memusage = LZMA_MEMUSAGE_BASE;
*old_memlimit = coder->memlimit; *old_memlimit = coder->memlimit;
ret = LZMA_OK; ret = LZMA_OK;
if (new_memlimit != 0 && new_memlimit < *memusage)
ret = LZMA_MEMLIMIT_ERROR;
} }
if (ret == LZMA_OK && new_memlimit != 0) if (ret == LZMA_OK && new_memlimit != 0)
@ -148,27 +158,26 @@ auto_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
{ {
lzma_next_coder_init(&auto_decoder_init, next, allocator); lzma_next_coder_init(&auto_decoder_init, next, allocator);
if (memlimit == 0)
return LZMA_PROG_ERROR;
if (flags & ~LZMA_SUPPORTED_FLAGS) if (flags & ~LZMA_SUPPORTED_FLAGS)
return LZMA_OPTIONS_ERROR; return LZMA_OPTIONS_ERROR;
if (next->coder == NULL) { lzma_auto_coder *coder = next->coder;
next->coder = lzma_alloc(sizeof(lzma_coder), allocator); if (coder == NULL) {
if (next->coder == NULL) coder = lzma_alloc(sizeof(lzma_auto_coder), allocator);
if (coder == NULL)
return LZMA_MEM_ERROR; return LZMA_MEM_ERROR;
next->coder = coder;
next->code = &auto_decode; next->code = &auto_decode;
next->end = &auto_decoder_end; next->end = &auto_decoder_end;
next->get_check = &auto_decoder_get_check; next->get_check = &auto_decoder_get_check;
next->memconfig = &auto_decoder_memconfig; next->memconfig = &auto_decoder_memconfig;
next->coder->next = LZMA_NEXT_CODER_INIT; coder->next = LZMA_NEXT_CODER_INIT;
} }
next->coder->memlimit = memlimit; coder->memlimit = my_max(1, memlimit);
next->coder->flags = flags; coder->flags = flags;
next->coder->sequence = SEQ_INIT; coder->sequence = SEQ_INIT;
return LZMA_OK; return LZMA_OK;
} }

View File

@ -325,6 +325,24 @@ lzma_block_buffer_encode(lzma_block *block, const lzma_allocator *allocator,
} }
#ifdef HAVE_SYMBOL_VERSIONS_LINUX
// This is for compatibility with binaries linked against liblzma that
// has been patched with xz-5.2.2-compat-libs.patch from RHEL/CentOS 7.
LZMA_SYMVER_API("lzma_block_uncomp_encode@XZ_5.2.2",
lzma_ret, lzma_block_uncomp_encode_522)(lzma_block *block,
const uint8_t *in, size_t in_size,
uint8_t *out, size_t *out_pos, size_t out_size)
lzma_nothrow lzma_attr_warn_unused_result
__attribute__((__alias__("lzma_block_uncomp_encode_52")));
LZMA_SYMVER_API("lzma_block_uncomp_encode@@XZ_5.2",
lzma_ret, lzma_block_uncomp_encode_52)(lzma_block *block,
const uint8_t *in, size_t in_size,
uint8_t *out, size_t *out_pos, size_t out_size)
lzma_nothrow lzma_attr_warn_unused_result;
#define lzma_block_uncomp_encode lzma_block_uncomp_encode_52
#endif
extern LZMA_API(lzma_ret) extern LZMA_API(lzma_ret)
lzma_block_uncomp_encode(lzma_block *block, lzma_block_uncomp_encode(lzma_block *block,
const uint8_t *in, size_t in_size, const uint8_t *in, size_t in_size,

View File

@ -15,7 +15,7 @@
#include "check.h" #include "check.h"
struct lzma_coder_s { typedef struct {
enum { enum {
SEQ_CODE, SEQ_CODE,
SEQ_PADDING, SEQ_PADDING,
@ -40,6 +40,9 @@ struct lzma_coder_s {
/// is unknown. /// is unknown.
lzma_vli compressed_limit; lzma_vli compressed_limit;
/// Maximum allowed Uncompressed Size.
lzma_vli uncompressed_limit;
/// Position when reading the Check field /// Position when reading the Check field
size_t check_pos; size_t check_pos;
@ -48,22 +51,7 @@ struct lzma_coder_s {
/// True if the integrity check won't be calculated and verified. /// True if the integrity check won't be calculated and verified.
bool ignore_check; bool ignore_check;
}; } lzma_block_coder;
static inline bool
update_size(lzma_vli *size, lzma_vli add, lzma_vli limit)
{
if (limit > LZMA_VLI_MAX)
limit = LZMA_VLI_MAX;
if (limit < *size || limit - *size < add)
return true;
*size += add;
return false;
}
static inline bool static inline bool
@ -74,33 +62,71 @@ is_size_valid(lzma_vli size, lzma_vli reference)
static lzma_ret static lzma_ret
block_decode(lzma_coder *coder, const lzma_allocator *allocator, block_decode(void *coder_ptr, const lzma_allocator *allocator,
const uint8_t *restrict in, size_t *restrict in_pos, const uint8_t *restrict in, size_t *restrict in_pos,
size_t in_size, uint8_t *restrict out, size_t in_size, uint8_t *restrict out,
size_t *restrict out_pos, size_t out_size, lzma_action action) size_t *restrict out_pos, size_t out_size, lzma_action action)
{ {
lzma_block_coder *coder = coder_ptr;
switch (coder->sequence) { switch (coder->sequence) {
case SEQ_CODE: { case SEQ_CODE: {
const size_t in_start = *in_pos; const size_t in_start = *in_pos;
const size_t out_start = *out_pos; const size_t out_start = *out_pos;
// Limit the amount of input and output space that we give
// to the raw decoder based on the information we have
// (or don't have) from Block Header.
const size_t in_stop = *in_pos + (size_t)my_min(
in_size - *in_pos,
coder->compressed_limit - coder->compressed_size);
const size_t out_stop = *out_pos + (size_t)my_min(
out_size - *out_pos,
coder->uncompressed_limit - coder->uncompressed_size);
const lzma_ret ret = coder->next.code(coder->next.coder, const lzma_ret ret = coder->next.code(coder->next.coder,
allocator, in, in_pos, in_size, allocator, in, in_pos, in_stop,
out, out_pos, out_size, action); out, out_pos, out_stop, action);
const size_t in_used = *in_pos - in_start; const size_t in_used = *in_pos - in_start;
const size_t out_used = *out_pos - out_start; const size_t out_used = *out_pos - out_start;
// NOTE: We compare to compressed_limit here, which prevents // Because we have limited the input and output sizes,
// the total size of the Block growing past LZMA_VLI_MAX. // we know that these cannot grow too big or overflow.
if (update_size(&coder->compressed_size, in_used, coder->compressed_size += in_used;
coder->compressed_limit) coder->uncompressed_size += out_used;
|| update_size(&coder->uncompressed_size,
out_used,
coder->block->uncompressed_size))
return LZMA_DATA_ERROR;
if (!coder->ignore_check) if (ret == LZMA_OK) {
const bool comp_done = coder->compressed_size
== coder->block->compressed_size;
const bool uncomp_done = coder->uncompressed_size
== coder->block->uncompressed_size;
// If both input and output amounts match the sizes
// in Block Header but we still got LZMA_OK instead
// of LZMA_STREAM_END, the file is broken.
if (comp_done && uncomp_done)
return LZMA_DATA_ERROR;
// If the decoder has consumed all the input that it
// needs but it still couldn't fill the output buffer
// or return LZMA_STREAM_END, the file is broken.
if (comp_done && *out_pos < out_size)
return LZMA_DATA_ERROR;
// If the decoder has produced all the output but
// it still didn't return LZMA_STREAM_END or consume
// more input (for example, detecting an end of
// payload marker may need more input but produce
// no output) the file is broken.
if (uncomp_done && *in_pos < in_size)
return LZMA_DATA_ERROR;
}
// Don't waste time updating the integrity check if it will be
// ignored. Also skip it if no new output was produced. This
// avoids null pointer + 0 (undefined behavior) when out == 0.
if (!coder->ignore_check && out_used > 0)
lzma_check_update(&coder->check, coder->block->check, lzma_check_update(&coder->check, coder->block->check,
out + out_start, out_used); out + out_start, out_used);
@ -177,8 +203,9 @@ block_decode(lzma_coder *coder, const lzma_allocator *allocator,
static void static void
block_decoder_end(lzma_coder *coder, const lzma_allocator *allocator) block_decoder_end(void *coder_ptr, const lzma_allocator *allocator)
{ {
lzma_block_coder *coder = coder_ptr;
lzma_next_end(&coder->next, allocator); lzma_next_end(&coder->next, allocator);
lzma_free(coder, allocator); lzma_free(coder, allocator);
return; return;
@ -198,44 +225,54 @@ lzma_block_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
|| !lzma_vli_is_valid(block->uncompressed_size)) || !lzma_vli_is_valid(block->uncompressed_size))
return LZMA_PROG_ERROR; return LZMA_PROG_ERROR;
// Allocate and initialize *next->coder if needed. // Allocate *next->coder if needed.
if (next->coder == NULL) { lzma_block_coder *coder = next->coder;
next->coder = lzma_alloc(sizeof(lzma_coder), allocator); if (coder == NULL) {
if (next->coder == NULL) coder = lzma_alloc(sizeof(lzma_block_coder), allocator);
if (coder == NULL)
return LZMA_MEM_ERROR; return LZMA_MEM_ERROR;
next->coder = coder;
next->code = &block_decode; next->code = &block_decode;
next->end = &block_decoder_end; next->end = &block_decoder_end;
next->coder->next = LZMA_NEXT_CODER_INIT; coder->next = LZMA_NEXT_CODER_INIT;
} }
// Basic initializations // Basic initializations
next->coder->sequence = SEQ_CODE; coder->sequence = SEQ_CODE;
next->coder->block = block; coder->block = block;
next->coder->compressed_size = 0; coder->compressed_size = 0;
next->coder->uncompressed_size = 0; coder->uncompressed_size = 0;
// If Compressed Size is not known, we calculate the maximum allowed // If Compressed Size is not known, we calculate the maximum allowed
// value so that encoded size of the Block (including Block Padding) // value so that encoded size of the Block (including Block Padding)
// is still a valid VLI and a multiple of four. // is still a valid VLI and a multiple of four.
next->coder->compressed_limit coder->compressed_limit
= block->compressed_size == LZMA_VLI_UNKNOWN = block->compressed_size == LZMA_VLI_UNKNOWN
? (LZMA_VLI_MAX & ~LZMA_VLI_C(3)) ? (LZMA_VLI_MAX & ~LZMA_VLI_C(3))
- block->header_size - block->header_size
- lzma_check_size(block->check) - lzma_check_size(block->check)
: block->compressed_size; : block->compressed_size;
// With Uncompressed Size this is simpler. If Block Header lacks
// the size info, then LZMA_VLI_MAX is the maximum possible
// Uncompressed Size.
coder->uncompressed_limit
= block->uncompressed_size == LZMA_VLI_UNKNOWN
? LZMA_VLI_MAX
: block->uncompressed_size;
// Initialize the check. It's caller's problem if the Check ID is not // Initialize the check. It's caller's problem if the Check ID is not
// supported, and the Block decoder cannot verify the Check field. // supported, and the Block decoder cannot verify the Check field.
// Caller can test lzma_check_is_supported(block->check). // Caller can test lzma_check_is_supported(block->check).
next->coder->check_pos = 0; coder->check_pos = 0;
lzma_check_init(&next->coder->check, block->check); lzma_check_init(&coder->check, block->check);
next->coder->ignore_check = block->version >= 1 coder->ignore_check = block->version >= 1
? block->ignore_check : false; ? block->ignore_check : false;
// Initialize the filter chain. // Initialize the filter chain.
return lzma_raw_decoder_init(&next->coder->next, allocator, return lzma_raw_decoder_init(&coder->next, allocator,
block->filters); block->filters);
} }

Some files were not shown because too many files have changed in this diff Show More