Jelajahi Sumber

Archive.Xz. Initial Import.

Brucey 3 tahun lalu
induk
melakukan
33b523ef3c
100 mengubah file dengan 28552 tambahan dan 0 penghapusan
  1. 30 0
      xz.mod/common.bmx
  2. 14 0
      xz.mod/examples/example_01.bmx
  3. 37 0
      xz.mod/examples/example_02.bmx
  4. 9 0
      xz.mod/examples/testdata.txt
  5. 9 0
      xz.mod/examples/테스트_데이터.txt
  6. 115 0
      xz.mod/source.bmx
  7. 110 0
      xz.mod/xz.bmx
  8. 70 0
      xz.mod/xz/.gitignore
  9. 27 0
      xz.mod/xz/AUTHORS
  10. 676 0
      xz.mod/xz/CMakeLists.txt
  11. 65 0
      xz.mod/xz/COPYING
  12. 339 0
      xz.mod/xz/COPYING.GPLv2
  13. 674 0
      xz.mod/xz/COPYING.GPLv3
  14. 502 0
      xz.mod/xz/COPYING.LGPLv2.1
  15. 7 0
      xz.mod/xz/ChangeLog
  16. 1234 0
      xz.mod/xz/Doxyfile.in
  17. 671 0
      xz.mod/xz/INSTALL
  18. 368 0
      xz.mod/xz/INSTALL.generic
  19. 114 0
      xz.mod/xz/Makefile.am
  20. 687 0
      xz.mod/xz/NEWS
  21. 231 0
      xz.mod/xz/PACKAGERS
  22. 304 0
      xz.mod/xz/README
  23. 142 0
      xz.mod/xz/THANKS
  24. 111 0
      xz.mod/xz/TODO
  25. 33 0
      xz.mod/xz/autogen.sh
  26. 58 0
      xz.mod/xz/build-aux/manconv.sh
  27. 24 0
      xz.mod/xz/build-aux/version.sh
  28. 49 0
      xz.mod/xz/cmake/tuklib_common.cmake
  29. 175 0
      xz.mod/xz/cmake/tuklib_cpucores.cmake
  30. 102 0
      xz.mod/xz/cmake/tuklib_integer.cmake
  31. 20 0
      xz.mod/xz/cmake/tuklib_mbstr.cmake
  32. 150 0
      xz.mod/xz/cmake/tuklib_physmem.cmake
  33. 19 0
      xz.mod/xz/cmake/tuklib_progname.cmake
  34. 940 0
      xz.mod/xz/configure.ac
  35. 30 0
      xz.mod/xz/debug/Makefile.am
  36. 17 0
      xz.mod/xz/debug/README
  37. 39 0
      xz.mod/xz/debug/crc32.c
  38. 103 0
      xz.mod/xz/debug/full_flush.c
  39. 53 0
      xz.mod/xz/debug/hex2bin.c
  40. 129 0
      xz.mod/xz/debug/known_sizes.c
  41. 51 0
      xz.mod/xz/debug/memusage.c
  42. 36 0
      xz.mod/xz/debug/repeat.c
  43. 125 0
      xz.mod/xz/debug/sync_flush.c
  44. 100 0
      xz.mod/xz/debug/translation.bash
  45. 31 0
      xz.mod/xz/doc/examples/00_README.txt
  46. 297 0
      xz.mod/xz/doc/examples/01_compress_easy.c
  47. 287 0
      xz.mod/xz/doc/examples/02_decompress.c
  48. 193 0
      xz.mod/xz/doc/examples/03_compress_custom.c
  49. 206 0
      xz.mod/xz/doc/examples/04_compress_easy_mt.c
  50. 206 0
      xz.mod/xz/doc/examples/11_file_info.c
  51. 25 0
      xz.mod/xz/doc/examples/Makefile
  52. 127 0
      xz.mod/xz/doc/examples_old/xz_pipe_comp.c
  53. 123 0
      xz.mod/xz/doc/examples_old/xz_pipe_decomp.c
  54. 224 0
      xz.mod/xz/doc/faq.txt
  55. 150 0
      xz.mod/xz/doc/history.txt
  56. 166 0
      xz.mod/xz/doc/lzma-file-format.txt
  57. 1150 0
      xz.mod/xz/doc/xz-file-format.txt
  58. 78 0
      xz.mod/xz/dos/INSTALL.txt
  59. 146 0
      xz.mod/xz/dos/Makefile
  60. 123 0
      xz.mod/xz/dos/README.txt
  61. 144 0
      xz.mod/xz/dos/config.h
  62. 115 0
      xz.mod/xz/extra/7z2lzma/7z2lzma.bash
  63. 88 0
      xz.mod/xz/extra/scanlzma/scanlzma.c
  64. 32 0
      xz.mod/xz/lib/Makefile.am
  65. 1197 0
      xz.mod/xz/lib/getopt.c
  66. 226 0
      xz.mod/xz/lib/getopt.in.h
  67. 171 0
      xz.mod/xz/lib/getopt1.c
  68. 131 0
      xz.mod/xz/lib/getopt_int.h
  69. 39 0
      xz.mod/xz/m4/.gitignore
  70. 85 0
      xz.mod/xz/m4/ax_check_capsicum.m4
  71. 507 0
      xz.mod/xz/m4/ax_pthread.m4
  72. 71 0
      xz.mod/xz/m4/getopt.m4
  73. 63 0
      xz.mod/xz/m4/posix-shell.m4
  74. 22 0
      xz.mod/xz/m4/tuklib_common.m4
  75. 175 0
      xz.mod/xz/m4/tuklib_cpucores.m4
  76. 131 0
      xz.mod/xz/m4/tuklib_integer.m4
  77. 30 0
      xz.mod/xz/m4/tuklib_mbstr.m4
  78. 211 0
      xz.mod/xz/m4/tuklib_physmem.m4
  79. 25 0
      xz.mod/xz/m4/tuklib_progname.m4
  80. 77 0
      xz.mod/xz/m4/visibility.m4
  81. 113 0
      xz.mod/xz/macosx/build.sh
  82. 31 0
      xz.mod/xz/po/.gitignore
  83. 6 0
      xz.mod/xz/po/LINGUAS
  84. 46 0
      xz.mod/xz/po/Makevars
  85. 13 0
      xz.mod/xz/po/POTFILES.in
  86. 949 0
      xz.mod/xz/po/cs.po
  87. 993 0
      xz.mod/xz/po/de.po
  88. 978 0
      xz.mod/xz/po/fr.po
  89. 1067 0
      xz.mod/xz/po/it.po
  90. 968 0
      xz.mod/xz/po/pl.po
  91. 1039 0
      xz.mod/xz/po/vi.po
  92. 2 0
      xz.mod/xz/po4a/.gitignore
  93. 5532 0
      xz.mod/xz/po4a/de.po
  94. 14 0
      xz.mod/xz/po4a/po4a.conf
  95. 45 0
      xz.mod/xz/po4a/update-po
  96. 42 0
      xz.mod/xz/src/Makefile.am
  97. 52 0
      xz.mod/xz/src/common/common_w32res.rc
  98. 521 0
      xz.mod/xz/src/common/mythread.h
  99. 199 0
      xz.mod/xz/src/common/sysdefs.h
  100. 71 0
      xz.mod/xz/src/common/tuklib_common.h

+ 30 - 0
xz.mod/common.bmx

@@ -0,0 +1,30 @@
+' Copyright (c) 2022 Bruce A Henderson
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'     * Redistributions of source code must retain the above copyright
+'       notice, this list of conditions and the following disclaimer.
+'     * Redistributions in binary form must reproduce the above copyright
+'       notice, this list of conditions and the following disclaimer in the
+'       documentation and/or other materials provided with the distribution.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
+' EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+' WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+' (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+' LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+' ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+' (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+' SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+SuperStrict
+
+Import "source.bmx"
+
+Extern
+	Function archive_read_support_filter_xz:Int(archive:Byte Ptr)
+	Function archive_write_add_filter_xz:Int(archive:Byte Ptr)
+End Extern

+ 14 - 0
xz.mod/examples/example_01.bmx

@@ -0,0 +1,14 @@
+SuperStrict
+
+Framework Archive.Xz
+Import Archive.Raw
+
+Local wa:TWriteArchive = New TWriteArchive
+wa.AddFilter(EArchiveFilter.XZ)
+wa.SetFormat(EArchiveFormat.RAW)
+
+wa.Open("data.xz")
+
+wa.AddFile("testdata.txt")
+
+wa.Close()

+ 37 - 0
xz.mod/examples/example_02.bmx

@@ -0,0 +1,37 @@
+SuperStrict
+
+Framework Archive.XZ
+Import Archive.Pax
+Import brl.standardio
+
+Local wa:TWriteArchive = New TWriteArchive
+wa.AddFilter(EArchiveFilter.XZ)
+wa.SetFormat(EArchiveFormat.PAX)
+
+wa.Open("data.tar.xz")
+
+wa.AddEntry("testdata.txt", "files/testdata.txt")
+wa.AddEntry("테스트_데이터.txt", "files/테스트_데이터.txt")
+wa.AddEntry("", "empty", 0, 0, EArchiveFileType.Dir)
+
+wa.Close()
+
+
+Local entry:TArchiveEntry = New TArchiveEntry
+
+Local ra:TReadArchive = New TReadArchive
+ra.AddFilter(EArchiveFilter.XZ)
+ra.SetFormat(EArchiveFormat.PAX)
+ra.Open("data.tar.xz")
+
+While ra.ReadNextHeader(entry) = ARCHIVE_OK
+	Print "File : " + entry.Pathname()
+	Print "Size : " + entry.Size()
+	Local s:String = LoadText(ra.DataStream())
+	Print "String size   : " + s.Length
+	Print "First n chars : " + s[0..17]
+	Print
+Wend
+
+ra.Free()
+

+ 9 - 0
xz.mod/examples/testdata.txt

@@ -0,0 +1,9 @@
+This is some data we want to compress
+
+
+blah 
+
+blah 
+
+
+blah

+ 9 - 0
xz.mod/examples/테스트_데이터.txt

@@ -0,0 +1,9 @@
+This is some data we want to compress
+
+
+blah 
+
+blah 
+
+
+blah

+ 115 - 0
xz.mod/source.bmx

@@ -0,0 +1,115 @@
+' Copyright (c) 2022 Bruce A Henderson
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'     * Redistributions of source code must retain the above copyright
+'       notice, this list of conditions and the following disclaimer.
+'     * Redistributions in binary form must reproduce the above copyright
+'       notice, this list of conditions and the following disclaimer in the
+'       documentation and/or other materials provided with the distribution.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
+' EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+' WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+' (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+' LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+' ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+' (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+' SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+SuperStrict
+
+
+Import "../core.mod/include/*.h"
+Import "../core.mod/libarchive/libarchive/*.h"
+Import "../core.mod/libarchive/libarchive/archive_read_support_filter_xz.c"
+Import "../core.mod/libarchive/libarchive/archive_write_add_filter_xz.c"
+
+ Import "xz/src/*.h"
+ Import "xz/src/common/*.h"
+ Import "xz/src/liblzma/api/*.h"
+ Import "xz/src/liblzma/common/*.h"
+ Import "xz/src/liblzma/check/*.h"
+ Import "xz/src/liblzma/delta/*.h"
+ Import "xz/src/liblzma/lzma/*.h"
+ Import "xz/src/liblzma/lz/*.h"
+ Import "xz/src/liblzma/rangecoder/*.h"
+ Import "xz/src/liblzma/simple/*.h"
+
+ Import "xz/src/liblzma/check/check.c"
+ Import "xz/src/liblzma/check/crc32_fast.c"
+ Import "xz/src/liblzma/check/crc32_table.c"
+ Import "xz/src/liblzma/check/crc64_fast.c"
+ Import "xz/src/liblzma/check/crc64_table.c"
+ Import "xz/src/liblzma/check/sha256.c"
+
+ Import "xz/src/liblzma/common/alone_decoder.c"
+ Import "xz/src/liblzma/common/alone_encoder.c"
+ Import "xz/src/liblzma/common/auto_decoder.c"
+ Import "xz/src/liblzma/common/block_buffer_decoder.c"
+ Import "xz/src/liblzma/common/block_buffer_encoder.c"
+ Import "xz/src/liblzma/common/block_decoder.c"
+ Import "xz/src/liblzma/common/block_encoder.c"
+ Import "xz/src/liblzma/common/block_header_decoder.c"
+ Import "xz/src/liblzma/common/block_header_encoder.c"
+ Import "xz/src/liblzma/common/block_util.c"
+ Import "xz/src/liblzma/common/common.c"
+ Import "xz/src/liblzma/common/easy_buffer_encoder.c"
+ Import "xz/src/liblzma/common/easy_decoder_memusage.c"
+ Import "xz/src/liblzma/common/easy_encoder_memusage.c"
+ Import "xz/src/liblzma/common/easy_encoder.c"
+ Import "xz/src/liblzma/common/easy_preset.c"
+ Import "xz/src/liblzma/common/filter_buffer_decoder.c"
+ Import "xz/src/liblzma/common/filter_buffer_encoder.c"
+ Import "xz/src/liblzma/common/filter_common.c"
+ Import "xz/src/liblzma/common/filter_decoder.c"
+ Import "xz/src/liblzma/common/filter_encoder.c"
+ Import "xz/src/liblzma/common/filter_flags_decoder.c"
+ Import "xz/src/liblzma/common/filter_flags_encoder.c"
+ Import "xz/src/liblzma/common/hardware_physmem.c"
+ Import "xz/src/liblzma/common/index_decoder.c"
+ Import "xz/src/liblzma/common/index_encoder.c"
+ Import "xz/src/liblzma/common/index_hash.c"
+ Import "xz/src/liblzma/common/index.c"
+ Import "xz/src/liblzma/common/stream_buffer_decoder.c"
+ Import "xz/src/liblzma/common/stream_buffer_encoder.c"
+ Import "xz/src/liblzma/common/stream_decoder.c"
+ Import "xz/src/liblzma/common/stream_encoder.c"
+ Import "xz/src/liblzma/common/stream_flags_common.c"
+ Import "xz/src/liblzma/common/stream_flags_decoder.c"
+ Import "xz/src/liblzma/common/stream_flags_encoder.c"
+ Import "xz/src/liblzma/common/vli_decoder.c"
+ Import "xz/src/liblzma/common/vli_encoder.c"
+ Import "xz/src/liblzma/common/vli_size.c"
+
+ Import "xz/src/liblzma/delta/delta_common.c"
+ Import "xz/src/liblzma/delta/delta_decoder.c"
+ Import "xz/src/liblzma/delta/delta_encoder.c"
+
+ Import "xz/src/liblzma/lz/lz_decoder.c"
+ Import "xz/src/liblzma/lz/lz_encoder_mf.c"
+ Import "xz/src/liblzma/lz/lz_encoder.c"
+
+ Import "xz/src/liblzma/lzma/fastpos_table.c"
+ Import "xz/src/liblzma/lzma/lzma_decoder.c"
+ Import "xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c"
+ Import "xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c"
+ Import "xz/src/liblzma/lzma/lzma_encoder_presets.c"
+ Import "xz/src/liblzma/lzma/lzma_encoder.c"
+ Import "xz/src/liblzma/lzma/lzma2_decoder.c"
+ Import "xz/src/liblzma/lzma/lzma2_encoder.c"
+
+ Import "xz/src/liblzma/rangecoder/price_table.c"
+
+ Import "xz/src/liblzma/simple/simple_coder.c"
+ Import "xz/src/liblzma/simple/simple_decoder.c"
+ Import "xz/src/liblzma/simple/simple_encoder.c"
+ Import "xz/src/liblzma/simple/arm.c"
+ Import "xz/src/liblzma/simple/armthumb.c"
+ Import "xz/src/liblzma/simple/ia64.c"
+ Import "xz/src/liblzma/simple/powerpc.c"
+ Import "xz/src/liblzma/simple/sparc.c"
+ Import "xz/src/liblzma/simple/x86.c"

+ 110 - 0
xz.mod/xz.bmx

@@ -0,0 +1,110 @@
+' Copyright (c) 2022 Bruce A Henderson
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'     * Redistributions of source code must retain the above copyright
+'       notice, this list of conditions and the following disclaimer.
+'     * Redistributions in binary form must reproduce the above copyright
+'       notice, this list of conditions and the following disclaimer in the
+'       documentation and/or other materials provided with the distribution.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
+' EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+' WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+' DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+' (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+' LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+' ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+' (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+' SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+SuperStrict
+
+Module Archive.Xz
+
+
+ModuleInfo "CC_OPTS: -DHAVE_LZMA_H -DHAVE_LIBLZMA -std=gnu99"
+ModuleInfo "CC_OPTS: -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64"
+?win32
+ModuleInfo "CC_OPTS: -DLIBARCHIVE_STATIC"
+?
+
+' config.h
+ModuleInfo "CC_OPTS: -DASSUME_RAM=128 -DHAVE_CFLOCALECOPYCURRENT=1"
+ModuleInfo "CC_OPTS: -DHAVE_CFPREFERENCESCOPYAPPVALUE=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECL_PROGRAM_INVOCATION_NAME=0"
+ModuleInfo "CC_OPTS: -DHAVE_DLFCN_H=1"
+ModuleInfo "CC_OPTS: -DHAVE_FCNTL_H=1 -DHAVE_FUTIMES=1 -DHAVE_GETOPT_H=1 -DHAVE_GETOPT_LONG=1"
+ModuleInfo "CC_OPTS: -DHAVE_ICONV=1"
+ModuleInfo "CC_OPTS: -DHAVE_INTTYPES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MBRTOWC=1 -DHAVE_MEMORY_H=1"
+ModuleInfo "CC_OPTS: -DHAVE_OPTRESET=1"
+
+ModuleInfo "CC_OPTS: -DHAVE_CHECK_CRC32=1 -DHAVE_CHECK_CRC64=1 -DHAVE_CHECK_SHA256=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODERS=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODER_ARM=1 -DHAVE_DECODER_ARMTHUMB=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODER_DELTA=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODER_IA64=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODER_LZMA1=1 -DHAVE_DECODER_LZMA2=1"
+ModuleInfo "CC_OPTS: -DHAVE_DECODER_POWERPC=1 -DHAVE_DECODER_SPARC=1 -DHAVE_DECODER_X86=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODERS=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODER_ARM=1 -DHAVE_ENCODER_ARMTHUMB=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODER_DELTA=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODER_IA64=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODER_LZMA1=1 -DHAVE_ENCODER_LZMA2=1"
+ModuleInfo "CC_OPTS: -DHAVE_ENCODER_POWERPC=1 -DHAVE_ENCODER_SPARC=1 -DHAVE_ENCODER_X86=1"
+ModuleInfo "CC_OPTS: -DHAVE_MF_BT2=1 -DHAVE_MF_BT3=1 -DHAVE_MF_BT4=1 -DHAVE_MF_HC3=1 -DHAVE_MF_HC4=1"
+
+?not win32
+ModuleInfo "CC_OPTS: -DHAVE_PTHREAD=1"
+ModuleInfo "CC_OPTS: -DHAVE_PTHREAD_PRIO_INHERIT=1"
+?
+ModuleInfo "CC_OPTS: -DHAVE_STDBOOL_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRINGS_H=1"
+ModuleInfo "CC_OPTS: -DHAVE_STRING_H=1"
+ModuleInfo "CC_OPTS: -DHAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC=1"
+ModuleInfo "CC_OPTS: -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TYPES_H=1"
+ModuleInfo "CC_OPTS: -DHAVE_UINTPTR_T=1 -DHAVE_UNISTD_H=1 -DHAVE_VISIBILITY=1 -DHAVE_WCWIDTH=1"
+ModuleInfo "CC_OPTS: -DHAVE__BOOL=1"
+ModuleInfo "CC_OPTS: -DNDEBUG=1"
+?ptr64
+ModuleInfo "CC_OPTS: -DSIZEOF_SIZE_T=8"
+?ptr32
+ModuleInfo "CC_OPTS: -DSIZEOF_SIZE_T=4"
+?
+ModuleInfo "CC_OPTS: -DSTDC_HEADERS=1"
+ModuleInfo "CC_OPTS: -DTUKLIB_CPUCORES_SYSCTL=1 -DTUKLIB_FAST_UNALIGNED_ACCESS=1 -DTUKLIB_PHYSMEM_SYSCTL=1"
+ModuleInfo "CC_OPTS: -DVERSION=5.0.4"
+
+
+Import Archive.Core
+Import "common.bmx"
+
+Private
+
+Type TXzArchiveFormat Extends TArchiveFormat
+
+	Method AddReadFormat:Int(archive:Byte Ptr, format:EArchiveFormat)
+		Return False
+	End Method
+
+	Method AddWriteFormat:Int(archive:Byte Ptr, format:EArchiveFormat)
+		Return False
+	End Method
+
+	Method AddReadFilter:Int(archive:Byte Ptr, filter:EArchiveFilter)
+		If filter = EArchiveFilter.XZ Then
+			archive_read_support_filter_xz(archive)
+			Return True
+		End If
+	End Method
+
+	Method AddWriteFilter:Int(archive:Byte Ptr, filter:EArchiveFilter)
+		If filter = EArchiveFilter.XZ Then
+			archive_write_add_filter_xz(archive)
+			Return True
+		End If
+	End Method
+End Type
+
+New TXzArchiveFormat

+ 70 - 0
xz.mod/xz/.gitignore

@@ -0,0 +1,70 @@
+*~
+*.bak
+*.bak[0-9]
+.gdb_history
+
+.deps
+.libs
+*.la
+*.lo
+*.o
+Makefile.in
+
+/ABOUT-NLS
+/autom4te.cache
+/Doxyfile
+/aclocal.m4
+/config.h
+/config.h.in
+/config.log
+/config.status
+/configure
+/libtool
+/stamp-h1
+
+build-aux/compile
+build-aux/config.guess
+build-aux/config.rpath
+build-aux/config.sub
+build-aux/depcomp
+build-aux/install-sh
+build-aux/ltmain.sh
+build-aux/missing
+build-aux/test-driver
+
+/src/liblzma/liblzma.pc
+/src/lzmainfo/lzmainfo
+/src/xz/xz
+/src/xzdec/lzmadec
+/src/xzdec/xzdec
+
+/src/scripts/xzdiff
+/src/scripts/xzgrep
+/src/scripts/xzless
+/src/scripts/xzmore
+
+/tests/compress_generated_abc
+/tests/compress_generated_random
+/tests/compress_generated_text
+/tests/create_compress_files
+/tests/test_bcj_exact_size
+/tests/test_block_header
+/tests/test_check
+/tests/test_filter_flags
+/tests/test_index
+/tests/test_stream_flags
+/tests/xzgrep_test_1.xz
+/tests/xzgrep_test_2.xz
+/tests/xzgrep_test_output
+
+/lib/Makefile
+/tests/Makefile
+/Makefile
+/debug/Makefile
+/src/scripts/Makefile
+/src/xz/Makefile
+/src/Makefile
+/src/liblzma/Makefile
+/src/liblzma/api/Makefile
+/src/lzmainfo/Makefile
+/src/xzdec/Makefile

+ 27 - 0
xz.mod/xz/AUTHORS

@@ -0,0 +1,27 @@
+
+Authors of XZ Utils
+===================
+
+    XZ Utils is developed and maintained by Lasse Collin
+    <[email protected]>.
+
+    Major parts of liblzma are based on code written by Igor Pavlov,
+    specifically the LZMA SDK <http://7-zip.org/sdk.html>. Without
+    this code, XZ Utils wouldn't exist.
+
+    The SHA-256 implementation in liblzma is based on the code found from
+    7-Zip <http://7-zip.org/>, which has a modified version of the SHA-256
+    code found from Crypto++ <http://www.cryptopp.com/>. The SHA-256 code
+    in Crypto++ was written by Kevin Springle and Wei Dai.
+
+    Some scripts have been adapted from gzip. The original versions
+    were written by Jean-loup Gailly, Charles Levert, and Paul Eggert.
+    Andrew Dudman helped adapting the scripts and their man pages for
+    XZ Utils.
+
+    The GNU Autotools-based build system contains files from many authors,
+    which I'm not trying to list here.
+
+    Several people have contributed fixes or reported bugs. Most of them
+    are mentioned in the file THANKS.
+

+ 676 - 0
xz.mod/xz/CMakeLists.txt

@@ -0,0 +1,676 @@
+#############################################################################
+#
+# Very limited CMake support for building some parts of XZ Utils
+#
+# For now, this is indented to be useful to build static or shared liblzma
+# on Windows with MSVC (to avoid the need to maintain Visual Studio project
+# files). Building liblzma on a few other platforms should work too but it
+# is somewhat experimental and not as portable as using ./configure.
+#
+# On some platforms this builds also xz and xzdec, but these are
+# highly experimental and meant for testing only:
+#   - No large file support on those 32-bit platforms that need it
+#   - No replacement getopt_long(), libc must have it
+#   - No sandboxing support
+#   - No translations
+#   - No xz symlinks are installed
+#
+# Other missing things:
+#   - No xzgrep or other scripts or their symlinks
+#   - No tests (no test failures either!)
+#
+# NOTE: Even if the code compiles without warnings, the end result may be
+# different than via ./configure. Specifically, the list of #defines
+# may be different (if so, probably this CMakeLists.txt got them wrong).
+#
+# This file provides the following installation components (if you only
+# need liblzma, install only its components!):
+#   - liblzma_Runtime
+#   - liblzma_Development
+#   - xz (on some platforms only)
+#   - xzdec (on some platforms only)
+#
+# To find the target liblzma::liblzma from other packages, use the CONFIG
+# option with find_package() to avoid a conflict with the FindLibLZMA module
+# with case-insensitive file systems. For example, to require liblzma 5.2.5
+# or a newer compatible version:
+#
+#     find_package(liblzma 5.2.5 REQUIRED CONFIG)
+#     target_link_libraries(my_application liblzma::liblzma)
+#
+#############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+#############################################################################
+
+cmake_minimum_required(VERSION 3.13...3.16 FATAL_ERROR)
+
+include(CheckSymbolExists)
+include(CheckStructHasMember)
+include(cmake/tuklib_integer.cmake)
+include(cmake/tuklib_cpucores.cmake)
+include(cmake/tuklib_physmem.cmake)
+include(cmake/tuklib_progname.cmake)
+include(cmake/tuklib_mbstr.cmake)
+
+# Get the package version from version.h into XZ_VERSION variable.
+file(READ src/liblzma/api/lzma/version.h XZ_VERSION)
+string(REGEX REPLACE
+"^.*\n\
+#define LZMA_VERSION_MAJOR ([0-9]+)\n\
+#define LZMA_VERSION_MINOR ([0-9]+)\n\
+#define LZMA_VERSION_PATCH ([0-9]+)\n\
+.*$"
+       "\\1.\\2.\\3" XZ_VERSION "${XZ_VERSION}")
+
+# Among other things, this gives us variables xz_VERSION and xz_VERSION_MAJOR.
+project(xz VERSION "${XZ_VERSION}" LANGUAGES C)
+
+# On Apple OSes, don't build executables as bundles:
+set(CMAKE_MACOSX_BUNDLE OFF)
+
+# Definitions common to all targets:
+add_compile_definitions(
+    # Package info:
+    PACKAGE_NAME="XZ Utils"
+    PACKAGE_BUGREPORT="[email protected]"
+    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)
+    add_compile_definitions(MYTHREAD_VISTA)
+else()
+    add_compile_definitions(MYTHREAD_POSIX)
+
+    # Check if pthread_condattr_setclock() exists to use CLOCK_MONOTONIC.
+    if(HAVE_DECL_CLOCK_MONOTONIC)
+        list(INSERT CMAKE_REQUIRED_LIBRARIES 0 "${CMAKE_THREAD_LIBS_INIT}")
+        check_symbol_exists(pthread_condattr_setclock pthread.h
+                            HAVE_PTHREAD_CONDATTR_SETCLOCK)
+        tuklib_add_definition_if(ALL HAVE_PTHREAD_CONDATTR_SETCLOCK)
+    endif()
+endif()
+
+# Options for new enough GCC or Clang on any arch or operating system:
+if(CMAKE_C_COMPILER_ID MATCHES GNU|Clang)
+    # configure.ac has a long list but it won't be copied here:
+    add_compile_options(-Wall -Wextra)
+endif()
+
+
+#############################################################################
+# liblzma
+#############################################################################
+
+option(BUILD_SHARED_LIBS "Build liblzma as a shared library instead of static")
+
+add_library(liblzma
+    src/common/mythread.h
+    src/common/sysdefs.h
+    src/common/tuklib_common.h
+    src/common/tuklib_config.h
+    src/common/tuklib_cpucores.c
+    src/common/tuklib_cpucores.h
+    src/common/tuklib_integer.h
+    src/common/tuklib_physmem.c
+    src/common/tuklib_physmem.h
+    src/liblzma/api/lzma.h
+    src/liblzma/api/lzma/base.h
+    src/liblzma/api/lzma/bcj.h
+    src/liblzma/api/lzma/block.h
+    src/liblzma/api/lzma/check.h
+    src/liblzma/api/lzma/container.h
+    src/liblzma/api/lzma/delta.h
+    src/liblzma/api/lzma/filter.h
+    src/liblzma/api/lzma/hardware.h
+    src/liblzma/api/lzma/index.h
+    src/liblzma/api/lzma/index_hash.h
+    src/liblzma/api/lzma/lzma12.h
+    src/liblzma/api/lzma/stream_flags.h
+    src/liblzma/api/lzma/version.h
+    src/liblzma/api/lzma/vli.h
+    src/liblzma/check/check.c
+    src/liblzma/check/check.h
+    src/liblzma/check/crc32_fast.c
+    src/liblzma/check/crc32_table.c
+    src/liblzma/check/crc32_table_be.h
+    src/liblzma/check/crc32_table_le.h
+    src/liblzma/check/crc64_fast.c
+    src/liblzma/check/crc64_table.c
+    src/liblzma/check/crc64_table_be.h
+    src/liblzma/check/crc64_table_le.h
+    src/liblzma/check/crc_macros.h
+    src/liblzma/check/sha256.c
+    src/liblzma/common/alone_decoder.c
+    src/liblzma/common/alone_decoder.h
+    src/liblzma/common/alone_encoder.c
+    src/liblzma/common/auto_decoder.c
+    src/liblzma/common/block_buffer_decoder.c
+    src/liblzma/common/block_buffer_encoder.c
+    src/liblzma/common/block_buffer_encoder.h
+    src/liblzma/common/block_decoder.c
+    src/liblzma/common/block_decoder.h
+    src/liblzma/common/block_encoder.c
+    src/liblzma/common/block_encoder.h
+    src/liblzma/common/block_header_decoder.c
+    src/liblzma/common/block_header_encoder.c
+    src/liblzma/common/block_util.c
+    src/liblzma/common/common.c
+    src/liblzma/common/common.h
+    src/liblzma/common/easy_buffer_encoder.c
+    src/liblzma/common/easy_decoder_memusage.c
+    src/liblzma/common/easy_encoder.c
+    src/liblzma/common/easy_encoder_memusage.c
+    src/liblzma/common/easy_preset.c
+    src/liblzma/common/easy_preset.h
+    src/liblzma/common/file_info.c
+    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_decoder.h
+    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)
+
+        # Export the public API symbols with __declspec(dllexport).
+        target_compile_definitions(liblzma PRIVATE DLL_EXPORT)
+    else()
+        # Disable __declspec(dllimport) when linking against static liblzma.
+        target_compile_definitions(liblzma INTERFACE LZMA_API_STATIC)
+    endif()
+elseif(CMAKE_SYSTEM_NAME MATCHES "^Linux$|^FreeBSD$")
+    # Symbol versioning for shared liblzma. This doesn't affect static builds.
+    target_link_options(liblzma PRIVATE
+        "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map"
+    )
+    set_target_properties(liblzma PROPERTIES
+        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma.map"
+        LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
+    )
+endif()
+
+set_target_properties(liblzma PROPERTIES
+    # At least for now the package versioning matches the rules used for
+    # shared library versioning (excluding development releases) so it is
+    # fine to use the package version here.
+    SOVERSION "${xz_VERSION_MAJOR}"
+    VERSION "${xz_VERSION}"
+
+    # It's liblzma.so or liblzma.dll, not libliblzma.so or lzma.dll.
+    # Avoid the name lzma.dll because it would conflict with LZMA SDK.
+    PREFIX ""
+)
+
+# Create 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)
+
+    tuklib_progname(xzdec)
+
+    install(TARGETS xzdec
+            RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+                    COMPONENT xzdec)
+
+    if(UNIX)
+        install(FILES src/xzdec/xzdec.1
+                DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
+                COMPONENT xzdec)
+    endif()
+endif()
+
+
+#############################################################################
+# xz
+#############################################################################
+
+if(NOT MSVC AND HAVE_GETOPT_LONG)
+    add_executable(xz
+        src/common/mythread.h
+        src/common/sysdefs.h
+        src/common/tuklib_common.h
+        src/common/tuklib_config.h
+        src/common/tuklib_exit.c
+        src/common/tuklib_exit.h
+        src/common/tuklib_gettext.h
+        src/common/tuklib_integer.h
+        src/common/tuklib_mbstr.h
+        src/common/tuklib_mbstr_fw.c
+        src/common/tuklib_mbstr_width.c
+        src/common/tuklib_open_stdxxx.c
+        src/common/tuklib_open_stdxxx.h
+        src/common/tuklib_progname.c
+        src/common/tuklib_progname.h
+        src/xz/args.c
+        src/xz/args.h
+        src/xz/coder.c
+        src/xz/coder.h
+        src/xz/file_io.c
+        src/xz/file_io.h
+        src/xz/hardware.c
+        src/xz/hardware.h
+        src/xz/list.c
+        src/xz/list.h
+        src/xz/main.c
+        src/xz/main.h
+        src/xz/message.c
+        src/xz/message.h
+        src/xz/mytime.c
+        src/xz/mytime.h
+        src/xz/options.c
+        src/xz/options.h
+        src/xz/private.h
+        src/xz/signals.c
+        src/xz/signals.h
+        src/xz/suffix.c
+        src/xz/suffix.h
+        src/xz/util.c
+        src/xz/util.h
+    )
+
+    target_include_directories(xz PRIVATE
+        src/common
+        src/liblzma/api
+    )
+
+    target_link_libraries(xz PRIVATE liblzma)
+
+    target_compile_definitions(xz PRIVATE ASSUME_RAM=128)
+
+    tuklib_progname(xz)
+    tuklib_mbstr(xz)
+
+    check_symbol_exists(optreset getopt.h HAVE_OPTRESET)
+    tuklib_add_definition_if(xz HAVE_OPTRESET)
+
+    check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE)
+    tuklib_add_definition_if(xz HAVE_POSIX_FADVISE)
+
+    # How to get file time:
+    check_struct_has_member("struct stat" st_atim.tv_nsec
+                            "sys/types.h;sys/stat.h"
+                            HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC)
+    if(HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC)
+        tuklib_add_definitions(xz HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC)
+    else()
+        check_struct_has_member("struct stat" st_atimespec.tv_nsec
+                                "sys/types.h;sys/stat.h"
+                                HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC)
+        if(HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC)
+            tuklib_add_definitions(xz HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC)
+        else()
+            check_struct_has_member("struct stat" st_atimensec
+                                    "sys/types.h;sys/stat.h"
+                                    HAVE_STRUCT_STAT_ST_ATIMENSEC)
+            tuklib_add_definition_if(xz HAVE_STRUCT_STAT_ST_ATIMENSEC)
+        endif()
+    endif()
+
+    # How to set file time:
+    check_symbol_exists(futimens "sys/types.h;sys/stat.h" HAVE_FUTIMENS)
+    if(HAVE_FUTIMENS)
+        tuklib_add_definitions(xz HAVE_FUTIMENS)
+    else()
+        check_symbol_exists(futimes "sys/time.h" HAVE_FUTIMES)
+        if(HAVE_FUTIMES)
+            tuklib_add_definitions(xz HAVE_FUTIMES)
+        else()
+            check_symbol_exists(futimesat "sys/time.h" HAVE_FUTIMESAT)
+            if(HAVE_FUTIMESAT)
+                tuklib_add_definitions(xz HAVE_FUTIMESAT)
+            else()
+                check_symbol_exists(utimes "sys/time.h" HAVE_UTIMES)
+                if(HAVE_UTIMES)
+                    tuklib_add_definitions(xz HAVE_UTIMES)
+                else()
+                    check_symbol_exists(_futime "sys/utime.h" HAVE__FUTIME)
+                    if(HAVE__FUTIME)
+                        tuklib_add_definitions(xz HAVE__FUTIME)
+                    else()
+                        check_symbol_exists(utime "utime.h" HAVE_UTIME)
+                        tuklib_add_definition_if(xz HAVE_UTIME)
+                    endif()
+                endif()
+            endif()
+        endif()
+    endif()
+
+    install(TARGETS xz
+            RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+                    COMPONENT xz)
+
+    install(FILES src/xz/xz.1
+            DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
+            COMPONENT xz)
+endif()

+ 65 - 0
xz.mod/xz/COPYING

@@ -0,0 +1,65 @@
+
+XZ Utils Licensing
+==================
+
+    Different licenses apply to different files in this package. Here
+    is a rough summary of which licenses apply to which parts of this
+    package (but check the individual files to be sure!):
+
+      - liblzma is in the public domain.
+
+      - xz, xzdec, and lzmadec command line tools are in the public
+        domain unless GNU getopt_long had to be compiled and linked
+        in from the lib directory. The getopt_long code is under
+        GNU LGPLv2.1+.
+
+      - The scripts to grep, diff, and view compressed files have been
+        adapted from gzip. These scripts and their documentation are
+        under GNU GPLv2+.
+
+      - All the documentation in the doc directory and most of the
+        XZ Utils specific documentation files in other directories
+        are in the public domain.
+
+      - Translated messages are in the public domain.
+
+      - The build system contains public domain files, and files that
+        are under GNU GPLv2+ or GNU GPLv3+. None of these files end up
+        in the binaries being built.
+
+      - Test files and test code in the tests directory, and debugging
+        utilities in the debug directory are in the public domain.
+
+      - The extra directory may contain public domain files, and files
+        that are under various free software licenses.
+
+    You can do whatever you want with the files that have been put into
+    the public domain. If you find public domain legally problematic,
+    take the previous sentence as a license grant. If you still find
+    the lack of copyright legally problematic, you have too many
+    lawyers.
+
+    As usual, this software is provided "as is", without any warranty.
+
+    If you copy significant amounts of public domain code from XZ Utils
+    into your project, acknowledging this somewhere in your software is
+    polite (especially if it is proprietary, non-free software), but
+    naturally it is not legally required. Here is an example of a good
+    notice to put into "about box" or into documentation:
+
+        This software includes code from XZ Utils <https://tukaani.org/xz/>.
+
+    The following license texts are included in the following files:
+      - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1
+      - COPYING.GPLv2: GNU General Public License version 2
+      - COPYING.GPLv3: GNU General Public License version 3
+
+    Note that the toolchain (compiler, linker etc.) may add some code
+    pieces that are copyrighted. Thus, it is possible that e.g. liblzma
+    binary wouldn't actually be in the public domain in its entirety
+    even though it contains no copyrighted code from the XZ Utils source
+    package.
+
+    If you have questions, don't hesitate to ask the author(s) for more
+    information.
+

+ 339 - 0
xz.mod/xz/COPYING.GPLv2

@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.

+ 674 - 0
xz.mod/xz/COPYING.GPLv3

@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+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,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.

+ 502 - 0
xz.mod/xz/COPYING.LGPLv2.1

@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!

+ 7 - 0
xz.mod/xz/ChangeLog

@@ -0,0 +1,7 @@
+See the commit log in the git repository:
+
+    git clone https://git.tukaani.org/xz.git
+
+Note that "make dist" doesn't put this tiny file into the package.
+Instead, the git commit log is used as ChangeLog. See dist-hook in
+Makefile.am for details.

+ 1234 - 0
xz.mod/xz/Doxyfile.in

@@ -0,0 +1,1234 @@
+# Doxyfile 1.4.7
+
+# Copyright (C) 1997-2007 by Dimitri van Heesch
+# License: GNU GPLv2+
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "@PACKAGE_NAME@"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         = "@PACKAGE_VERSION@"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = YES
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        = @top_srcdir@/src
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = @top_srcdir@/src
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS          = *.h *.c
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = YES
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             = LZMA_API(type)=type \
+                         LZMA_API_IMPORT \
+                         LZMA_API_CALL=
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO

+ 671 - 0
xz.mod/xz/INSTALL

@@ -0,0 +1,671 @@
+
+XZ Utils Installation
+=====================
+
+    0. Preface
+    1. Supported platforms
+       1.1. Compilers
+       1.2. Platform-specific notes
+            1.2.1. AIX
+            1.2.2. IRIX
+            1.2.3. MINIX 3
+            1.2.4. OpenVMS
+            1.2.5. Solaris, OpenSolaris, and derivatives
+            1.2.6. Tru64
+            1.2.7. Windows
+            1.2.8. DOS
+            1.2.9. z/OS
+       1.3. Adding support for new platforms
+    2. configure options
+       2.1. Static vs. dynamic linking of liblzma
+       2.2. Optimizing xzdec and lzmadec
+    3. xzgrep and other scripts
+       3.1. Dependencies
+       3.2. PATH
+    4. Troubleshooting
+       4.1. "No C99 compiler was found."
+       4.2. "No POSIX conforming shell (sh) was found."
+       4.3. configure works but build fails at crc32_x86.S
+       4.4. Lots of warnings about symbol visibility
+       4.5. "make check" fails
+       4.6. liblzma.so (or similar) not found when running xz
+
+
+0. Preface
+----------
+
+    If you aren't familiar with building packages that use GNU Autotools,
+    see the file INSTALL.generic for generic instructions before reading
+    further.
+
+    If you are going to build a package for distribution, see also the
+    file PACKAGERS. It contains information that should help making the
+    binary packages as good as possible, but the information isn't very
+    interesting to those making local builds for private use or for use
+    in special situations like embedded systems.
+
+
+1. Supported platforms
+----------------------
+
+    XZ Utils are developed on GNU/Linux, but they should work on many
+    POSIX-like operating systems like *BSDs and Solaris, and even on
+    a few non-POSIX operating systems.
+
+
+1.1. Compilers
+
+    A C99 compiler is required to compile XZ Utils. If you use GCC, you
+    need at least version 3.x.x. GCC version 2.xx.x doesn't support some
+    C99 features used in XZ Utils source code, thus GCC 2 won't compile
+    XZ Utils.
+
+    XZ Utils takes advantage of some GNU C extensions when building
+    with GCC. Because these extensions are used only when building
+    with GCC, it should be possible to use any C99 compiler.
+
+
+1.2. Platform-specific notes
+
+1.2.1. AIX
+
+    If you use IBM XL C compiler, pass CC=xlc_r to configure. If
+    you use CC=xlc instead, you must disable threading support
+    with --disable-threads (usually not recommended).
+
+
+1.2.2. IRIX
+
+    MIPSpro 7.4.4m has been reported to produce broken code if using
+    the -O2 optimization flag ("make check" fails). Using -O1 should
+    work.
+
+    A problem has been reported when using shared liblzma. Passing
+    --disable-shared to configure works around this. Alternatively,
+    putting "-64" to CFLAGS to build a 64-bit version might help too.
+
+
+1.2.3. MINIX 3
+
+    The default install of MINIX 3 includes Amsterdam Compiler Kit (ACK),
+    which doesn't support C99. Install GCC to compile XZ Utils.
+
+    MINIX 3.1.8 and older have bugs in /usr/include/stdint.h, which has
+    to be patched before XZ Utils can be compiled correctly. See
+    <http://gforge.cs.vu.nl/gf/project/minix/tracker/?action=TrackerItemEdit&tracker_item_id=537>.
+
+    MINIX 3.2.0 and later use a different libc and aren't affected by
+    the above bug.
+
+    XZ Utils doesn't have code to detect the amount of physical RAM and
+    number of CPU cores on MINIX 3.
+
+    See section 4.4 in this file about symbol visibility warnings (you
+    may want to pass gl_cv_cc_visibility=no to configure).
+
+
+1.2.4. OpenVMS
+
+    XZ Utils can be built for OpenVMS, but the build system files
+    are not included in the XZ Utils source package. The required
+    OpenVMS-specific files are maintained by Jouk Jansen and can be
+    downloaded here:
+
+        http://nchrem.tnw.tudelft.nl/openvms/software2.html#xzutils
+
+
+1.2.5. Solaris, OpenSolaris, and derivatives
+
+    The following linker error has been reported on some x86 systems:
+
+        ld: fatal: relocation error: R_386_GOTOFF: ...
+
+    This can be worked around by passing gl_cv_cc_visibility=no
+    as an argument to the configure script.
+
+    test_scripts.sh in "make check" may fail if good enough tools are
+    missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). Nowadays
+    /usr/xpg4/bin is added to the script PATH by default on Solaris
+    (see --enable-path-for-scripts=PREFIX in section 2), but old xz
+    releases needed extra steps. See sections 4.5 and 3.2 for more
+    information.
+
+
+1.2.6. Tru64
+
+    If you try to use the native C compiler on Tru64 (passing CC=cc to
+    configure), you may need the workaround mention in section 4.1 in
+    this file (pass also ac_cv_prog_cc_c99= to configure).
+
+
+1.2.7. Windows
+
+    If it is enough to build liblzma (no command line tools):
+
+      - There is experimental CMake support. As it is, it should be
+        good enough to build static liblzma with Visual Studio.
+        Building liblzma.dll might work too (if it doesn't, it should
+        be fixed). The CMake support may work with MinGW or MinGW-w64.
+        Read the comment in the beginning of CMakeLists.txt before
+        running CMake!
+
+      - There are Visual Studio project files under the "windows"
+        directory. See windows/INSTALL-MSVC.txt. In the future the
+        project files will be removed when CMake support is good
+        enough. Thus, please test the CMake version and help fix
+        possible issues.
+
+    To build also the command line tools:
+
+      - MinGW-w64 + MSYS (32-bit and 64-bit x86): This is used
+        for building the official binary packages for Windows.
+        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
+    that will probably require writing a separate makefile. Building
+    the command line tools with non-GNU toolchains will be harder than
+    building only liblzma.
+
+    Even if liblzma is built with MinGW(-w64), the resulting DLL can
+    be used by other compilers and linkers, including MSVC. See
+    windows/README-Windows.txt for details.
+
+
+1.2.8. DOS
+
+    There is a Makefile in the "dos" directory to build XZ Utils on
+    DOS using DJGPP. Support for long file names (LFN) is needed at
+    build time but the resulting xz.exe works without LFN support too.
+    See dos/INSTALL.txt and dos/README.txt for more information.
+
+
+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
+
+    If you have written patches to make XZ Utils to work on previously
+    unsupported platform, please send the patches to me! I will consider
+    including them to the official version. It's nice to minimize the
+    need of third-party patching.
+
+    One exception: Don't request or send patches to change the whole
+    source package to C89. I find C99 substantially nicer to write and
+    maintain. However, the public library headers must be in C89 to
+    avoid frustrating those who maintain programs, which are strictly
+    in C89 or C++.
+
+
+2. configure options
+--------------------
+
+    In most cases, the defaults are what you want. Many of the options
+    below are useful only when building a size-optimized version of
+    liblzma or command line tools.
+
+    --enable-encoders=LIST
+    --disable-encoders
+                Specify a comma-separated LIST of filter encoders to
+                build. See "./configure --help" for exact list of
+                available filter encoders. The default is to build all
+                supported encoders.
+
+                If LIST is empty or --disable-encoders is used, no filter
+                encoders will be built and also the code shared between
+                encoders will be omitted.
+
+                Disabling encoders will remove some symbols from the
+                liblzma ABI, so this option should be used only when it
+                is known to not cause problems.
+
+    --enable-decoders=LIST
+    --disable-decoders
+                This is like --enable-encoders but for decoders. The
+                default is to build all supported decoders.
+
+    --enable-match-finders=LIST
+                liblzma includes two categories of match finders:
+                hash chains and binary trees. Hash chains (hc3 and hc4)
+                are quite fast but they don't provide the best compression
+                ratio. Binary trees (bt2, bt3 and bt4) give excellent
+                compression ratio, but they are slower and need more
+                memory than hash chains.
+
+                You need to enable at least one match finder to build the
+                LZMA1 or LZMA2 filter encoders. Usually hash chains are
+                used only in the fast mode, while binary trees are used to
+                when the best compression ratio is wanted.
+
+                The default is to build all the match finders if LZMA1
+                or LZMA2 filter encoders are being built.
+
+    --enable-checks=LIST
+                liblzma support multiple integrity checks. CRC32 is
+                mandatory, and cannot be omitted. See "./configure --help"
+                for exact list of available integrity check types.
+
+                liblzma and the command line tools can decompress files
+                which use unsupported integrity check type, but naturally
+                the file integrity cannot be verified in that case.
+
+                Disabling integrity checks may remove some symbols from
+                the liblzma ABI, so this option should be used only when
+                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-xzdec
+    --disable-lzmadec
+    --disable-lzmainfo
+                Don't build and install the command line tool mentioned
+                in the option name.
+
+                NOTE: Disabling xz will skip some tests in "make check".
+
+                NOTE: If xzdec is disabled and lzmadec is left enabled,
+                a dangling man page symlink lzmadec.1 -> xzdec.1 is
+                created.
+
+    --disable-lzma-links
+                Don't create symlinks for LZMA Utils compatibility.
+                This includes lzma, unlzma, and lzcat. If scripts are
+                installed, also lzdiff, lzcmp, lzgrep, lzegrep, lzfgrep,
+                lzmore, and lzless will be omitted if this option is used.
+
+    --disable-scripts
+                Don't install the scripts xzdiff, xzgrep, xzmore, xzless,
+                and their symlinks.
+
+    --disable-doc
+                Don't install the documentation files to $docdir
+                (often /usr/doc/xz or /usr/local/doc/xz). Man pages
+                will still be installed. The $docdir can be changed
+                with --docdir=DIR.
+
+    --disable-assembler
+                liblzma includes some assembler optimizations. Currently
+                there is only assembler code for CRC32 and CRC64 for
+                32-bit x86.
+
+                All the assembler code in liblzma is position-independent
+                code, which is suitable for use in shared libraries and
+                position-independent executables. So far only i386
+                instructions are used, but the code is optimized for i686
+                class CPUs. If you are compiling liblzma exclusively for
+                pre-i686 systems, you may want to disable the assembler
+                code.
+
+    --enable-unaligned-access
+                Allow liblzma to use unaligned memory access for 16-bit
+                and 32-bit loads and stores. This should be enabled only
+                when the hardware supports this, i.e. when unaligned
+                access is fast. Some operating system kernels emulate
+                unaligned access, which is extremely slow. This option
+                shouldn't be used on systems that rely on such emulation.
+
+                Unaligned access is enabled by default on x86, x86-64,
+                and big endian PowerPC.
+
+    --enable-small
+                Reduce the size of liblzma by selecting smaller but
+                semantically equivalent version of some functions, and
+                omit precomputed lookup tables. This option tends to
+                make liblzma slightly slower.
+
+                Note that while omitting the precomputed tables makes
+                liblzma smaller on disk, the tables are still needed at
+                run time, and need to be computed at startup. This also
+                means that the RAM holding the tables won't be shared
+                between applications linked against shared liblzma.
+
+                This option doesn't modify CFLAGS to tell the compiler
+                to optimize for size. You need to add -Os or equivalent
+                flag(s) to CFLAGS manually.
+
+    --enable-assume-ram=SIZE
+                On the most common operating systems, XZ Utils is able to
+                detect the amount of physical memory on the system. This
+                information is used by the options --memlimit-compress,
+                --memlimit-decompress, and --memlimit when setting the
+                limit to a percentage of total RAM.
+
+                On some systems, there is no code to detect the amount of
+                RAM though. Using --enable-assume-ram one can set how much
+                memory to assume on these systems. SIZE is given as MiB.
+                The default is 128 MiB.
+
+                Feel free to send patches to add support for detecting
+                the amount of RAM on the operating system you use. See
+                src/common/tuklib_physmem.c for details.
+
+    --enable-threads=METHOD
+                Threading support is enabled by default so normally there
+                is no need to specify this option.
+
+                Supported values for METHOD:
+
+                        yes     Autodetect the threading method. If none
+                                is found, configure will give an error.
+
+                        posix   Use POSIX pthreads. This is the default
+                                except on Windows outside Cygwin.
+
+                        win95   Use Windows 95 compatible threads. This
+                                is compatible with Windows XP and later
+                                too. This is the default for 32-bit x86
+                                Windows builds. The `win95' threading is
+                                incompatible with --enable-small.
+
+                        vista   Use Windows Vista compatible threads. The
+                                resulting binaries won't run on Windows XP
+                                or older. This is the default for Windows
+                                excluding 32-bit x86 builds (that is, on
+                                x86-64 the default is `vista').
+
+                        no      Disable threading support. This is the
+                                same as using --disable-threads.
+                                NOTE: If combined with --enable-small, the
+                                resulting liblzma won't be thread safe,
+                                that is, if a multi-threaded application
+                                calls any liblzma functions from more than
+                                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.
+                                This is the default.
+
+                        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
+                Use symbol versioning for liblzma. This is enabled by
+                default on GNU/Linux, other GNU-based systems, and
+                FreeBSD.
+
+    --enable-debug
+                This enables the assert() macro and possibly some other
+                run-time consistency checks. It makes the code slower, so
+                you normally don't want to have this enabled.
+
+    --enable-werror
+                If building with GCC, make all compiler warnings an error,
+                that abort the compilation. This may help catching bugs,
+                and should work on most systems. This has no effect on the
+                resulting binaries.
+
+    --enable-path-for-scripts=PREFIX
+                If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in
+                the beginning of the scripts (xzgrep and others).
+                The default is empty except on Solaris the default is
+                /usr/xpg4/bin.
+
+                This can be useful if the default PATH doesn't contain
+                modern POSIX tools (as can be the case on Solaris) or if
+                one wants to ensure that the correct xz binary is in the
+                PATH for the scripts. Note that the latter use can break
+                "make check" if the prefixed PATH causes a wrong xz binary
+                (other than the one that was just built) to be used.
+
+                Older xz releases support a different method for setting
+                the PATH for the scripts. It is described in section 3.2
+                and is supported in this xz version too.
+
+
+2.1. Static vs. dynamic linking of liblzma
+
+    On 32-bit x86, linking against static liblzma can give a minor
+    speed improvement. Static libraries on x86 are usually compiled as
+    position-dependent code (non-PIC) and shared libraries are built as
+    position-independent code (PIC). PIC wastes one register, which can
+    make the code slightly slower compared to a non-PIC version. (Note
+    that this doesn't apply to x86-64.)
+
+    If you want to link xz against static liblzma, the simplest way
+    is to pass --disable-shared to configure. If you want also shared
+    liblzma, run configure again and run "make install" only for
+    src/liblzma.
+
+
+2.2. Optimizing xzdec and lzmadec
+
+    xzdec and lzmadec are intended to be relatively small instead of
+    optimizing for the best speed. Thus, it is a good idea to build
+    xzdec and lzmadec separately:
+
+      - To link the tools against static liblzma, pass --disable-shared
+        to configure.
+
+      - To select somewhat size-optimized variant of some things in
+        liblzma, pass --enable-small to configure.
+
+      - Tell the compiler to optimize for size instead of speed.
+        E.g. with GCC, put -Os into CFLAGS.
+
+      - xzdec and lzmadec will never use multithreading capabilities of
+        liblzma. You can avoid dependency on libpthread by passing
+        --disable-threads to configure.
+
+      - There are and will be no translated messages for xzdec and
+        lzmadec, so it is fine to pass also --disable-nls to configure.
+
+      - Only decoder code is needed, so you can speed up the build
+        slightly by passing --disable-encoders to configure. This
+        shouldn't affect the final size of the executables though,
+        because the linker is able to omit the encoder code anyway.
+
+    If you have no use for xzdec or lzmadec, you can disable them with
+    --disable-xzdec and --disable-lzmadec.
+
+
+3. xzgrep and other scripts
+---------------------------
+
+3.1. Dependencies
+
+    POSIX shell (sh) and bunch of other standard POSIX tools are required
+    to run the scripts. The configure script tries to find a POSIX
+    compliant sh, but if it fails, you can force the shell by passing
+    gl_cv_posix_shell=/path/to/posix-sh as an argument to the configure
+    script.
+
+    xzdiff (xzcmp/lzdiff/lzcmp) may use mktemp if it is available. As
+    a fallback xzdiff will use mkdir to securely create a temporary
+    directory. Having mktemp available is still recommended since the
+    mkdir fallback method isn't as robust as mktemp is. The original
+    mktemp can be found from <http://www.mktemp.org/>. On GNU, most will
+    use the mktemp program from GNU coreutils instead of the original
+    implementation. Both mktemp versions are fine.
+
+    In addition to using xz to decompress .xz files, xzgrep and xzdiff
+    use gzip, bzip2, and lzop to support .gz, bz2, and .lzo files.
+
+
+3.2. PATH
+
+    The method described below is supported by older xz releases.
+    It is supported by the current version too, but the newer
+    --enable-path-for-scripts=PREFIX described in section 2 may be
+    more convenient.
+
+    The scripts assume that the required tools (standard POSIX utilities,
+    mktemp, and xz) are in PATH; the scripts don't set the PATH themselves
+    (except as described for --enable-path-for-scripts=PREFIX). Some
+    people like this while some think this is a bug. Those in the latter
+    group can easily patch the scripts before running the configure script
+    by taking advantage of a placeholder line in the scripts.
+
+    For example, to make the scripts prefix /usr/bin:/bin to PATH:
+
+        perl -pi -e 's|^#SET_PATH.*$|PATH=/usr/bin:/bin:\$PATH|' \
+                src/scripts/xz*.in
+
+
+4. Troubleshooting
+------------------
+
+4.1. "No C99 compiler was found."
+
+    You need a C99 compiler to build XZ Utils. If the configure script
+    cannot find a C99 compiler and you think you have such a compiler
+    installed, set the compiler command by passing CC=/path/to/c99 as
+    an argument to the configure script.
+
+    If you get this error even when you think your compiler supports C99,
+    you can override the test by passing ac_cv_prog_cc_c99= as an argument
+    to the configure script. The test for C99 compiler is not perfect (and
+    it is not as easy to make it perfect as it sounds), so sometimes this
+    may be needed. You will get a compile error if your compiler doesn't
+    support enough C99.
+
+
+4.2. "No POSIX conforming shell (sh) was found."
+
+    xzgrep and other scripts need a shell that (roughly) conforms
+    to POSIX. The configure script tries to find such a shell. If
+    it fails, you can force the shell to be used by passing
+    gl_cv_posix_shell=/path/to/posix-sh as an argument to the configure
+    script. Alternatively you can omit the installation of scripts and
+    this error by passing --disable-scripts to configure.
+
+
+4.3. configure works but build fails at crc32_x86.S
+
+    The easy fix is to pass --disable-assembler to the configure script.
+
+    The configure script determines if assembler code can be used by
+    looking at the configure triplet; there is currently no check if
+    the assembler code can actually actually be built. The x86 assembler
+    code should work on x86 GNU/Linux, *BSDs, Solaris, Darwin, MinGW,
+    Cygwin, and DJGPP. On other x86 systems, there may be problems and
+    the assembler code may need to be disabled with the configure option.
+
+    If you get this error when building for x86-64, you have specified or
+    the configure script has misguessed your architecture. Pass the
+    correct configure triplet using the --build=CPU-COMPANY-SYSTEM option
+    (see INSTALL.generic).
+
+
+4.4. Lots of warnings about symbol visibility
+
+    On some systems where symbol visibility isn't supported, GCC may
+    still accept the visibility options and attributes, which will make
+    configure think that visibility is supported. This will result in
+    many compiler warnings. You can avoid the warnings by forcing the
+    visibility support off by passing gl_cv_cc_visibility=no as an
+    argument to the configure script. This has no effect on the
+    resulting binaries, but fewer warnings looks nicer and may allow
+    using --enable-werror.
+
+
+4.5. "make check" fails
+
+    If the other tests pass but test_scripts.sh fails, then the problem
+    is in the scripts in src/scripts. Comparing the contents of
+    tests/xzgrep_test_output to tests/xzgrep_expected_output might
+    give a good idea about problems in xzgrep. One possibility is that
+    some tools are missing from the current PATH or the tools lack
+    support for some POSIX features. This can happen at least on
+    Solaris where the tools in /bin may be ancient but good enough
+    tools are available in /usr/xpg4/bin or /usr/xpg6/bin. For possible
+    fixes, see --enable-path-for-scripts=PREFIX in section 2 and the
+    older alternative method described in section 3.2 of this file.
+
+    If tests other than test_scripts.sh fail, a likely reason is that
+    libtool links the test programs against an installed version of
+    liblzma instead of the version that was just built. This is
+    obviously a bug which seems to happen on some platforms.
+    A workaround is to uninstall the old liblzma versions first.
+
+    If the problem isn't any of those described above, then it's likely
+    a bug in XZ Utils or in the compiler. See the platform-specific
+    notes in this file for possible known problems. Please report
+    a bug if you cannot solve the problem. See README for contact
+    information.
+
+
+4.6. liblzma.so (or similar) not found when running xz
+
+    If you installed the package with "make install" and get an error
+    about liblzma.so (or a similarly named file) being missing, try
+    running "ldconfig" to update the run-time linker cache (if your
+    operating system has such a command).
+

+ 368 - 0
xz.mod/xz/INSTALL.generic

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

+ 114 - 0
xz.mod/xz/Makefile.am

@@ -0,0 +1,114 @@
+##
+## Author: Lasse Collin
+##
+## This file has been put into the public domain.
+## You can do whatever you want with this file.
+##
+
+# Use -n to prevent gzip from adding a timestamp to the .gz headers.
+GZIP_ENV = -9n
+
+DIST_SUBDIRS = lib src po tests debug
+SUBDIRS =
+
+if COND_GNULIB
+SUBDIRS += lib
+endif
+
+SUBDIRS += src po tests
+
+if COND_DOC
+dist_doc_DATA = \
+	AUTHORS \
+	COPYING \
+	COPYING.GPLv2 \
+	NEWS \
+	README \
+	THANKS \
+	TODO \
+	doc/faq.txt \
+	doc/history.txt \
+	doc/xz-file-format.txt \
+	doc/lzma-file-format.txt
+
+examplesdir = $(docdir)/examples
+dist_examples_DATA = \
+	doc/examples/00_README.txt \
+	doc/examples/01_compress_easy.c \
+	doc/examples/02_decompress.c \
+	doc/examples/03_compress_custom.c \
+	doc/examples/04_compress_easy_mt.c \
+	doc/examples/Makefile
+
+examplesolddir = $(docdir)/examples_old
+dist_examplesold_DATA = \
+	doc/examples_old/xz_pipe_comp.c \
+	doc/examples_old/xz_pipe_decomp.c
+endif
+
+EXTRA_DIST = \
+	po4a \
+	extra \
+	dos \
+	windows \
+	macosx \
+	autogen.sh \
+	Doxyfile.in \
+	COPYING.GPLv2 \
+	COPYING.GPLv3 \
+	COPYING.LGPLv2.1 \
+	INSTALL.generic \
+	PACKAGERS \
+	build-aux/manconv.sh \
+	build-aux/version.sh
+
+ACLOCAL_AMFLAGS = -I m4
+
+# List of man pages to convert to PDF and plain text in the dist-hook target.
+manfiles = \
+	src/xz/xz.1 \
+	src/xzdec/xzdec.1 \
+	src/lzmainfo/lzmainfo.1 \
+	src/scripts/xzdiff.1 \
+	src/scripts/xzgrep.1 \
+	src/scripts/xzless.1 \
+	src/scripts/xzmore.1
+
+# Create ChangeLog from output of "git log --date=iso --stat".
+# Convert the man pages to PDF and plain text (ASCII only) formats.
+dist-hook:
+	if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \
+		( cd "$(srcdir)" && git log --date=iso --stat \
+			b667a3ef6338a2c1db7b7706b1f6c99ea392221c^..HEAD ) \
+			> "$(distdir)/ChangeLog"; \
+	fi
+	if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \
+		dest="$(distdir)/doc/man" && \
+		$(MKDIR_P) "$$dest/pdf-a4" "$$dest/pdf-letter" "$$dest/txt" && \
+		for FILE in $(manfiles); do \
+			BASE=`basename $$FILE .1` && \
+			sh "$(srcdir)/build-aux/manconv.sh" pdf a4 \
+				< "$(srcdir)/$$FILE" \
+				> "$$dest/pdf-a4/$$BASE-a4.pdf" && \
+			sh "$(srcdir)/build-aux/manconv.sh" pdf letter \
+				< "$(srcdir)/$$FILE" \
+				> "$$dest/pdf-letter/$$BASE-letter.pdf" && \
+			sh "$(srcdir)/build-aux/manconv.sh" ascii \
+				< "$(srcdir)/$$FILE" \
+				> "$$dest/txt/$$BASE.txt"; \
+		done; \
+	fi
+
+# This works with GNU tar and gives cleaner package than normal 'make dist'.
+# This also ensures that the man page translations are up to date (dist-hook
+# would be too late for that).
+mydist:
+	sh "$(srcdir)/src/liblzma/validate_map.sh"
+	cd "$(srcdir)/po4a" && sh update-po
+	VERSION=$(VERSION); \
+	if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \
+		SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \
+		test -n "$$SNAPSHOT" && VERSION=$$SNAPSHOT; \
+	fi; \
+	TAR_OPTIONS='--owner=0 --group=0 --numeric-owner --mode=u+rw,go+r-w' \
+		$(MAKE) VERSION="$$VERSION" dist-gzip

+ 687 - 0
xz.mod/xz/NEWS

@@ -0,0 +1,687 @@
+
+XZ Utils Release Notes
+======================
+
+5.3.1alpha (2018-04-29)
+
+    * All fixes from 5.2.4.
+
+    * Add lzma_file_info_decoder() into liblzma and use it in xz to
+      implement the --list feature.
+
+    * Capsicum sandbox support is enabled by default where available
+      (FreeBSD >= 10).
+
+
+5.2.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)
+
+    * Fixed a compression-ratio regression in fast mode of LZMA1 and
+      LZMA2. The bug is present in 5.1.4beta and 5.2.0 releases.
+
+    * Fixed a portability problem in xz that affected at least OpenBSD.
+
+    * Fixed xzdiff to be compatible with FreeBSD's mktemp which differs
+      from most other mktemp implementations.
+
+    * Changed CPU core count detection to use cpuset_getaffinity() on
+      FreeBSD.
+
+
+5.2.0 (2014-12-21)
+
+    Since 5.1.4beta:
+
+    * All fixes from 5.0.8
+
+    * liblzma: Fixed lzma_stream_encoder_mt_memusage() when a preset
+      was used.
+
+    * xzdiff: If mktemp isn't installed, mkdir will be used as
+      a fallback to create a temporary directory. Installing mktemp
+      is still recommended.
+
+    * Updated French, German, Italian, Polish, and Vietnamese
+      translations.
+
+    Summary of fixes and new features added in the 5.1.x development
+    releases:
+
+    * liblzma:
+
+        - Added support for multi-threaded compression. See the
+          lzma_mt structure, lzma_stream_encoder_mt(), and
+          lzma_stream_encoder_mt_memusage() in <lzma/container.h>,
+          lzma_get_progress() in <lzma/base.h>, and lzma_cputhreads()
+          in <lzma/hardware.h> for details.
+
+        - Made the uses of lzma_allocator const correct.
+
+        - Added lzma_block_uncomp_encode() to create uncompressed
+          .xz Blocks using LZMA2 uncompressed chunks.
+
+        - Added support for LZMA_IGNORE_CHECK.
+
+        - A few speed optimizations were made.
+
+        - Added support for symbol versioning. It is enabled by default
+          on GNU/Linux, other GNU-based systems, and FreeBSD.
+
+        - liblzma (not the whole XZ Utils) should now be buildable
+          with MSVC 2013 update 2 or later using windows/config.h.
+
+    * xz:
+
+        - Fixed a race condition in the signal handling. It was
+          possible that e.g. the first SIGINT didn't make xz exit
+          if reading or writing blocked and one had bad luck. The fix
+          is non-trivial, so as of writing it is unknown if it will be
+          backported to the v5.0 branch.
+
+        - Multi-threaded compression can be enabled with the
+          --threads (-T) option.
+          [Fixed: This originally said "decompression".]
+
+        - New command line options in xz: --single-stream,
+          --block-size=SIZE, --block-list=SIZES,
+          --flush-timeout=TIMEOUT, and --ignore-check.
+
+        - xz -lvv now shows the minimum xz version that is required to
+          decompress the file. Currently it is 5.0.0 for all supported
+          .xz files except files with empty LZMA2 streams require 5.0.2.
+
+    * xzdiff and xzgrep now support .lzo files if lzop is installed.
+      The .tzo suffix is also recognized as a shorthand for .tar.lzo.
+
+
+5.1.4beta (2014-09-14)
+
+    * All fixes from 5.0.6
+
+    * liblzma: Fixed the use of presets in threaded encoder
+      initialization.
+
+    * xz --block-list and --block-size can now be used together
+      in single-threaded mode. Previously the combination only
+      worked in multi-threaded mode.
+
+    * Added support for LZMA_IGNORE_CHECK to liblzma and made it
+      available in xz as --ignore-check.
+
+    * liblzma speed optimizations:
+
+        - Initialization of a new LZMA1 or LZMA2 encoder has been
+          optimized. (The speed of reinitializing an already-allocated
+          encoder isn't affected.) This helps when compressing many
+          small buffers with lzma_stream_buffer_encode() and other
+          similar situations where an already-allocated encoder state
+          isn't reused. This speed-up is visible in xz too if one
+          compresses many small files one at a time instead running xz
+          once and giving all files as command-line arguments.
+
+        - Buffer comparisons are now much faster when unaligned access
+          is allowed (configured with --enable-unaligned-access). This
+          speeds up encoding significantly. There is arch-specific code
+          for 32-bit and 64-bit x86 (32-bit needs SSE2 for the best
+          results and there's no run-time CPU detection for now).
+          For other archs there is only generic code which probably
+          isn't as optimal as arch-specific solutions could be.
+
+        - A few speed optimizations were made to the SHA-256 code.
+          (Note that the builtin SHA-256 code isn't used on all
+          operating systems.)
+
+    * liblzma can now be built with MSVC 2013 update 2 or later
+      using windows/config.h.
+
+    * Vietnamese translation was added.
+
+
+5.1.3alpha (2013-10-26)
+
+    * All fixes from 5.0.5
+
+    * liblzma:
+
+        - Fixed a deadlock in the threaded encoder.
+
+        - Made the uses of lzma_allocator const correct.
+
+        - Added lzma_block_uncomp_encode() to create uncompressed
+          .xz Blocks using LZMA2 uncompressed chunks.
+
+        - Added support for native threads on Windows and the ability
+          to detect the number of CPU cores.
+
+    * xz:
+
+        - Fixed a race condition in the signal handling. It was
+          possible that e.g. the first SIGINT didn't make xz exit
+          if reading or writing blocked and one had bad luck. The fix
+          is non-trivial, so as of writing it is unknown if it will be
+          backported to the v5.0 branch.
+
+        - Made the progress indicator work correctly in threaded mode.
+
+        - Threaded encoder now works together with --block-list=SIZES.
+
+        - Added preliminary support for --flush-timeout=TIMEOUT.
+          It can be useful for (somewhat) real-time streaming. For
+          now the decompression side has to be done with something
+          else than the xz tool due to how xz does buffering, but this
+          should be fixed.
+
+
+5.1.2alpha (2012-07-04)
+
+    * All fixes from 5.0.3 and 5.0.4
+
+    * liblzma:
+
+        - Fixed a deadlock and an invalid free() in the threaded encoder.
+
+        - Added support for symbol versioning. It is enabled by default
+          on GNU/Linux, other GNU-based systems, and FreeBSD.
+
+        - Use SHA-256 implementation from the operating system if one is
+          available in libc, libmd, or libutil. liblzma won't use e.g.
+          OpenSSL or libgcrypt to avoid introducing new dependencies.
+
+        - Fixed liblzma.pc for static linking.
+
+        - Fixed a few portability bugs.
+
+    * xz --decompress --single-stream now fixes the input position after
+      successful decompression. Now the following works:
+
+          echo foo | xz > foo.xz
+          echo bar | xz >> foo.xz
+          ( xz -dc --single-stream ; xz -dc --single-stream ) < foo.xz
+
+      Note that it doesn't work if the input is not seekable
+      or if there is Stream Padding between the concatenated
+      .xz Streams.
+
+    * xz -lvv now shows the minimum xz version that is required to
+      decompress the file. Currently it is 5.0.0 for all supported .xz
+      files except files with empty LZMA2 streams require 5.0.2.
+
+    * Added an *incomplete* implementation of --block-list=SIZES to xz.
+      It only works correctly in single-threaded mode and when
+      --block-size isn't used at the same time. --block-list allows
+      specifying the sizes of Blocks which can be useful e.g. when
+      creating files for random-access reading.
+
+
+5.1.1alpha (2011-04-12)
+
+    * All fixes from 5.0.2
+
+    * liblzma fixes that will also be included in 5.0.3:
+
+        - A memory leak was fixed.
+
+        - lzma_stream_buffer_encode() no longer creates an empty .xz
+          Block if encoding an empty buffer. Such an empty Block with
+          LZMA2 data would trigger a bug in 5.0.1 and older (see the
+          first bullet point in 5.0.2 notes). When releasing 5.0.2,
+          I thought that no encoder creates this kind of files but
+          I was wrong.
+
+        - Validate function arguments better in a few functions. Most
+          importantly, specifying an unsupported integrity check to
+          lzma_stream_buffer_encode() no longer creates a corrupt .xz
+          file. Probably no application tries to do that, so this
+          shouldn't be a big problem in practice.
+
+        - Document that lzma_block_buffer_encode(),
+          lzma_easy_buffer_encode(), lzma_stream_encoder(), and
+          lzma_stream_buffer_encode() may return LZMA_UNSUPPORTED_CHECK.
+
+        - The return values of the _memusage() functions are now
+          documented better.
+
+    * Support for multithreaded compression was added using the simplest
+      method, which splits the input data into blocks and compresses
+      them independently. Other methods will be added in the future.
+      The current method has room for improvement, e.g. it is possible
+      to reduce the memory usage.
+
+    * Added the options --single-stream and --block-size=SIZE to xz.
+
+    * xzdiff and xzgrep now support .lzo files if lzop is installed.
+      The .tzo suffix is also recognized as a shorthand for .tar.lzo.
+
+    * Support for short 8.3 filenames under DOS was added to xz. It is
+      experimental and may change before it gets into a stable release.
+
+
+5.0.8 (2014-12-21)
+
+    * Fixed an old bug in xzgrep that affected OpenBSD and probably
+      a few other operating systems too.
+
+    * Updated French and German translations.
+
+    * Added support for detecting the amount of RAM on AmigaOS/AROS.
+
+    * Minor build system updates.
+
+
+5.0.7 (2014-09-20)
+
+    * Fix regressions introduced in 5.0.6:
+
+        - Fix building with non-GNU make.
+
+        - Fix invalid Libs.private value in liblzma.pc which broke
+          static linking against liblzma if the linker flags were
+          taken from pkg-config.
+
+
+5.0.6 (2014-09-14)
+
+    * xzgrep now exits with status 0 if at least one file matched.
+
+    * A few minor portability and build system fixes
+
+
+5.0.5 (2013-06-30)
+
+    * lzmadec and liblzma's lzma_alone_decoder(): Support decompressing
+      .lzma files that have less common settings in the headers
+      (dictionary size other than 2^n or 2^n + 2^(n-1), or uncompressed
+      size greater than 256 GiB). The limitations existed to avoid false
+      positives when detecting .lzma files. The lc + lp <= 4 limitation
+      still remains since liblzma's LZMA decoder has that limitation.
+
+      NOTE: xz's .lzma support or liblzma's lzma_auto_decoder() are NOT
+      affected by this change. They still consider uncommon .lzma headers
+      as not being in the .lzma format. Changing this would give way too
+      many false positives.
+
+    * xz:
+
+        - Interaction of preset and custom filter chain options was
+          made less illogical. This affects only certain less typical
+          uses cases so few people are expected to notice this change.
+
+          Now when a custom filter chain option (e.g. --lzma2) is
+          specified, all preset options (-0 ... -9, -e) earlier are on
+          the command line are completely forgotten. Similarly, when
+          a preset option is specified, all custom filter chain options
+          earlier on the command line are completely forgotten.
+
+          Example 1: "xz -9 --lzma2=preset=5 -e" is equivalent to "xz -e"
+          which is equivalent to "xz -6e". Earlier -e didn't put xz back
+          into preset mode and thus the example command was equivalent
+          to "xz --lzma2=preset=5".
+
+          Example 2: "xz -9e --lzma2=preset=5 -7" is equivalent to
+          "xz -7". Earlier a custom filter chain option didn't make
+          xz forget the -e option so the example was equivalent to
+          "xz -7e".
+
+        - Fixes and improvements to error handling.
+
+        - Various fixes to the man page.
+
+    * xzless: Fixed to work with "less" versions 448 and later.
+
+    * xzgrep: Made -h an alias for --no-filename.
+
+    * Include the previously missing debug/translation.bash which can
+      be useful for translators.
+
+    * Include a build script for Mac OS X. This has been in the Git
+      repository since 2010 but due to a mistake in Makefile.am the
+      script hasn't been included in a release tarball before.
+
+
+5.0.4 (2012-06-22)
+
+    * liblzma:
+
+        - Fix lzma_index_init(). It could crash if memory allocation
+          failed.
+
+        - Fix the possibility of an incorrect LZMA_BUF_ERROR when a BCJ
+          filter is used and the application only provides exactly as
+          much output space as is the uncompressed size of the file.
+
+        - Fix a bug in doc/examples_old/xz_pipe_decompress.c. It didn't
+          check if the last call to lzma_code() really returned
+          LZMA_STREAM_END, which made the program think that truncated
+          files are valid.
+
+        - New example programs in doc/examples (old programs are now in
+          doc/examples_old). These have more comments and more detailed
+          error handling.
+
+    * Fix "xz -lvv foo.xz". It could crash on some corrupted files.
+
+    * Fix output of "xz --robot -lv" and "xz --robot -lvv" which
+      incorrectly printed the filename also in the "foo (x/x)" format.
+
+    * Fix exit status of "xzdiff foo.xz bar.xz".
+
+    * Fix exit status of "xzgrep foo binary_file".
+
+    * Fix portability to EBCDIC systems.
+
+    * Fix a configure issue on AIX with the XL C compiler. See INSTALL
+      for details.
+
+    * Update French, German, Italian, and Polish translations.
+
+
+5.0.3 (2011-05-21)
+
+    * liblzma fixes:
+
+        - A memory leak was fixed.
+
+        - lzma_stream_buffer_encode() no longer creates an empty .xz
+          Block if encoding an empty buffer. Such an empty Block with
+          LZMA2 data would trigger a bug in 5.0.1 and older (see the
+          first bullet point in 5.0.2 notes). When releasing 5.0.2,
+          I thought that no encoder creates this kind of files but
+          I was wrong.
+
+        - Validate function arguments better in a few functions. Most
+          importantly, specifying an unsupported integrity check to
+          lzma_stream_buffer_encode() no longer creates a corrupt .xz
+          file. Probably no application tries to do that, so this
+          shouldn't be a big problem in practice.
+
+        - Document that lzma_block_buffer_encode(),
+          lzma_easy_buffer_encode(), lzma_stream_encoder(), and
+          lzma_stream_buffer_encode() may return LZMA_UNSUPPORTED_CHECK.
+
+        - The return values of the _memusage() functions are now
+          documented better.
+
+    * Fix command name detection in xzgrep. xzegrep and xzfgrep now
+      correctly use egrep and fgrep instead of grep.
+
+    * French translation was added.
+
+
+5.0.2 (2011-04-01)
+
+    * LZMA2 decompressor now correctly accepts LZMA2 streams with no
+      uncompressed data. Previously it considered them corrupt. The
+      bug can affect applications that use raw LZMA2 streams. It is
+      very unlikely to affect .xz files because no compressor creates
+      .xz files with empty LZMA2 streams. (Empty .xz files are a
+      different thing than empty LZMA2 streams.)
+
+    * "xz --suffix=.foo filename.foo" now refuses to compress the
+      file due to it already having the suffix .foo. It was already
+      documented on the man page, but the code lacked the test.
+
+    * "xzgrep -l foo bar.xz" works now.
+
+    * Polish translation was added.
+
+
+5.0.1 (2011-01-29)
+
+    * xz --force now (de)compresses files that have setuid, setgid,
+      or sticky bit set and files that have multiple hard links.
+      The man page had it documented this way already, but the code
+      had a bug.
+
+    * gzip and bzip2 support in xzdiff was fixed.
+
+    * Portability fixes
+
+    * Minor fix to Czech translation
+
+
+5.0.0 (2010-10-23)
+
+    Only the most important changes compared to 4.999.9beta are listed
+    here. One change is especially important:
+
+      * The memory usage limit is now disabled by default. Some scripts
+        written before this change may have used --memory=max on xz command
+        line or in XZ_OPT. THESE USES OF --memory=max SHOULD BE REMOVED
+        NOW, because they interfere with user's ability to set the memory
+        usage limit himself. If user-specified limit causes problems to
+        your script, blame the user.
+
+    Other significant changes:
+
+      * Added support for XZ_DEFAULTS environment variable. This variable
+        allows users to set default options for xz, e.g. default memory
+        usage limit or default compression level. Scripts that use xz
+        must never set or unset XZ_DEFAULTS. Scripts should use XZ_OPT
+        instead if they need a way to pass options to xz via an
+        environment variable.
+
+      * The compression settings associated with the preset levels
+        -0 ... -9 have been changed. --extreme was changed a little too.
+        It is now less likely to make compression worse, but with some
+        files the new --extreme may compress slightly worse than the old
+        --extreme.
+
+      * If a preset level (-0 ... -9) is specified after a custom filter
+        chain options have been used (e.g. --lzma2), the custom filter
+        chain will be forgotten. Earlier the preset options were
+        completely ignored after custom filter chain options had been
+        seen.
+
+      * xz will create sparse files when decompressing if the uncompressed
+        data contains long sequences of binary zeros. This is done even
+        when writing to standard output that is connected to a regular
+        file and certain additional conditions are met to make it safe.
+
+      * Support for "xz --list" was added. Combine with --verbose or
+        --verbose --verbose (-vv) for detailed output.
+
+      * I had hoped that liblzma API would have been stable after
+        4.999.9beta, but there have been a couple of changes in the
+        advanced features, which don't affect most applications:
+
+          - Index handling code was revised. If you were using the old
+            API, you will get a compiler error (so it's easy to notice).
+
+          - A subtle but important change was made to the Block handling
+            API. lzma_block.version has to be initialized even for
+            lzma_block_header_decode(). Code that doesn't do it will work
+            for now, but might break in the future, which makes this API
+            change easy to miss.
+
+      * The major soname has been bumped to 5.0.0. liblzma API and ABI
+        are now stable, so the need to recompile programs linking against
+        liblzma shouldn't arise soon.
+

+ 231 - 0
xz.mod/xz/PACKAGERS

@@ -0,0 +1,231 @@
+
+Information to packagers of XZ Utils
+====================================
+
+    0. Preface
+    1. Package naming
+    2. Package description
+    3. License
+    4. configure options
+    5. Additional documentation
+    6. Extra files
+    7. Installing XZ Utils and LZMA Utils in parallel
+    8. Example
+
+
+0. Preface
+----------
+
+    This document is meant for people who create and maintain XZ Utils
+    packages for operating system distributions. The focus is on GNU/Linux
+    systems, but most things apply to other systems too.
+
+    While the standard "configure && make DESTDIR=$PKG install" should
+    give a pretty good package, there are some details which packagers
+    may want to tweak.
+
+    Packagers should also read the INSTALL file.
+
+
+1. Package naming
+-----------------
+
+    The preferred name for the XZ Utils package is "xz", because that's
+    the name of the upstream tarball. Naturally you may have good reasons
+    to use some other name; I won't get angry about it. ;-) It's just nice
+    to be able to point people to the correct package name without asking
+    what distro they have.
+
+    If your distro policy is to split things into small pieces, here is
+    one suggestion:
+
+        xz              xz, xzdec, scripts (xzdiff, xzgrep, etc.), docs
+        xz-lzma         lzma, unlzma, lzcat, lzgrep etc. symlinks and
+                        lzmadec binary for compatibility with LZMA Utils
+        liblzma         liblzma.so.*
+        liblzma-devel   liblzma.so, liblzma.a, API headers
+
+
+2. Package description
+----------------------
+
+    Here is a suggestion which you may use as the package description.
+    If you can use only one-line description, pick only the first line.
+    Naturally, feel free to use some other description if you find it
+    better, and maybe send it to me too.
+
+        Library and command line tools for XZ and LZMA compressed files
+
+        XZ Utils provide a general purpose data compression library
+        and command line tools. The native file format is the .xz
+        format, but also the legacy .lzma format is supported. The .xz
+        format supports multiple compression algorithms, of which LZMA2
+        is currently the primary algorithm. With typical files, XZ Utils
+        create about 30 % smaller files than gzip.
+
+    If you are splitting XZ Utils into multiple packages, here are some
+    suggestions for package descriptions:
+
+    xz:
+
+        Command line tools for XZ and LZMA compressed files
+
+        This package includes the xz compression tool and other command
+        line tools from XZ Utils. xz has command line syntax similar to
+        that of gzip. The native file format is the .xz format, but also
+        the legacy .lzma format is supported. The .xz format supports
+        multiple compression algorithms, of which LZMA2 is currently the
+        primary algorithm. With typical files, XZ Utils create about 30 %
+        smaller files than gzip.
+
+        Note that this package doesn't include the files needed for
+        LZMA Utils 4.32.x compatibility. Install also the xz-lzma
+        package to make XZ Utils emulate LZMA Utils 4.32.x.
+
+    xz-lzma:
+
+        LZMA Utils emulation with XZ Utils
+
+        This package includes executables and symlinks to make
+        XZ Utils emulate lzma, unlzma, lzcat, and other command
+        line tools found from the legacy LZMA Utils 4.32.x package.
+
+    liblzma:
+
+        Library for XZ and LZMA compressed files
+
+        liblzma is a general purpose data compression library with
+        an API similar to that of zlib. liblzma supports multiple
+        algorithms, of which LZMA2 is currently the primary algorithm.
+        The native file format is .xz, but also the legacy .lzma
+        format and raw streams (no headers at all) are supported.
+
+        This package includes the shared library.
+
+    liblzma-devel:
+
+        Library for XZ and LZMA compressed files
+
+        This package includes the API headers, static library, and
+        other development files related to liblzma.
+
+
+3. License
+----------
+
+    If the package manager supports a license field, you probably should
+    put GPLv2+ there (GNU GPL v2 or later). The interesting parts of
+    XZ Utils are in the public domain, but some less important files
+    ending up into the binary package are under GPLv2+. So it is simplest
+    to just say GPLv2+ if you cannot specify "public domain and GPLv2+".
+
+    If you split XZ Utils into multiple packages as described earlier
+    in this file, liblzma and liblzma-dev packages will contain only
+    public domain code (from XZ Utils at least; compiler or linker may
+    add some third-party code, which may be copyrighted).
+
+
+4. configure options
+--------------------
+
+    Unless you are building a package for a distribution that is meant
+    only for embedded systems, don't use the following configure options:
+
+        --enable-debug
+        --enable-encoders (*)
+        --enable-decoders
+        --enable-match-finders
+        --enable-checks
+        --enable-small (*)
+        --disable-threads (*)
+
+    (*) These are OK when building xzdec and lzmadec as described
+        in INSTALL.
+
+    xzdec and lzmadec don't provide any functionality that isn't already
+    available in the xz tool. Shipping xzdec and lzmadec without size
+    optimization and statically-linked liblzma isn't very useful. Doing
+    that would give users the xzdec man page, which may make it easier
+    for people to find out that such tools exists, but the executables
+    wouldn't have any advantage over the full-featured xz.
+
+
+5. Additional documentation
+---------------------------
+
+    "make install" copies some additional documentation to $docdir
+    (--docdir in configure). There is a copy of the GNU GPL v2, which
+    can be replaced with a symlink if your distro ships with shared
+    copies of the common license texts.
+
+    liblzma API is currently only documented using Doxygen tags in the
+    API headers. It hasn't been tested much how good results Doxygen
+    is able to make from the tags (e.g. Doxyfile might need tweaking,
+    the tagging may need to be improved etc.), so it might be simpler
+    to just let people read docs directly from the .h files for now,
+    and also save quite a bit in package size at the same time.
+
+
+6. Extra files
+--------------
+
+    The "extra" directory contains some small extra tools or other files.
+    The exact set of extra files can vary between XZ Utils releases. The
+    extra files have only limited use or they are too dangerous to be
+    put directly to $bindir (7z2lzma.sh is a good example, since it can
+    silently create corrupt output if certain conditions are not met).
+
+    If you feel like it, you may copy the extra directory under the doc
+    directory (e.g. /usr/share/doc/xz/extra). Maybe some people will find
+    them useful. However, most people needing these tools probably are
+    able to find them from the source package too.
+
+    The "debug" directory contains some tools that are useful only when
+    hacking on XZ Utils. Don't package these tools.
+
+
+7. Installing XZ Utils and LZMA Utils in parallel
+-------------------------------------------------
+
+    XZ Utils and LZMA Utils 4.32.x can be installed in parallel by
+    omitting the compatibility symlinks (lzma, unlzma, lzcat, lzgrep etc.)
+    from the XZ Utils package. It's probably a good idea to still package
+    the symlinks into a separate package so that users may choose if they
+    want to use XZ Utils or LZMA Utils for handling .lzma files.
+
+
+8. Example
+----------
+
+    Here is an example for i686 GNU/Linux that
+      - links xz and lzmainfo against shared liblzma;
+      - links size-optimized xzdec and lzmadec against static liblzma
+        while avoiding libpthread dependency;
+      - includes only shared liblzma in the final package; and
+      - copies also the "extra" directory to the package.
+
+    PKG=/tmp/xz-pkg
+    tar xf xz-x.y.z.tar.gz
+    cd xz-x.y.z
+    ./configure \
+            --prefix=/usr \
+            --disable-static \
+            --disable-xzdec \
+            --disable-lzmadec \
+            CFLAGS='-march=i686 -mtune=generic -O2'
+    make
+    make DESTDIR=$PKG install-strip
+    make clean
+    ./configure \
+            --prefix=/usr \
+            --disable-shared \
+            --disable-nls \
+            --disable-encoders \
+            --enable-small \
+            --disable-threads \
+            CFLAGS='-march=i686 -mtune=generic -Os'
+    make -C src/liblzma
+    make -C src/xzdec
+    make -C src/xzdec DESTDIR=$PKG install-strip
+    cp -a extra $PKG/usr/share/doc/xz
+

+ 304 - 0
xz.mod/xz/README

@@ -0,0 +1,304 @@
+
+XZ Utils
+========
+
+    0. Overview
+    1. Documentation
+       1.1. Overall documentation
+       1.2. Documentation for command-line tools
+       1.3. Documentation for liblzma
+    2. Version numbering
+    3. Reporting bugs
+    4. Translations
+    5. Other implementations of the .xz format
+    6. Contact information
+
+
+0. Overview
+-----------
+
+    XZ Utils provide a general-purpose data-compression library plus
+    command-line tools. The native file format is the .xz format, but
+    also the legacy .lzma format is supported. The .xz format supports
+    multiple compression algorithms, which are called "filters" in the
+    context of XZ Utils. The primary filter is currently LZMA2. With
+    typical files, XZ Utils create about 30 % smaller files than gzip.
+
+    To ease adapting support for the .xz format into existing applications
+    and scripts, the API of liblzma is somewhat similar to the API of the
+    popular zlib library. For the same reason, the command-line tool xz
+    has a command-line syntax similar to that of gzip.
+
+    When aiming for the highest compression ratio, the LZMA2 encoder uses
+    a lot of CPU time and may use, depending on the settings, even
+    hundreds of megabytes of RAM. However, in fast modes, the LZMA2 encoder
+    competes with bzip2 in compression speed, RAM usage, and compression
+    ratio.
+
+    LZMA2 is reasonably fast to decompress. It is a little slower than
+    gzip, but a lot faster than bzip2. Being fast to decompress means
+    that the .xz format is especially nice when the same file will be
+    decompressed very many times (usually on different computers), which
+    is the case e.g. when distributing software packages. In such
+    situations, it's not too bad if the compression takes some time,
+    since that needs to be done only once to benefit many people.
+
+    With some file types, combining (or "chaining") LZMA2 with an
+    additional filter can improve the compression ratio. A filter chain may
+    contain up to four filters, although usually only one or two are used.
+    For example, putting a BCJ (Branch/Call/Jump) filter before LZMA2
+    in the filter chain can improve compression ratio of executable files.
+
+    Since the .xz format allows adding new filter IDs, it is possible that
+    some day there will be a filter that is, for example, much faster to
+    compress than LZMA2 (but probably with worse compression ratio).
+    Similarly, it is possible that some day there is a filter that will
+    compress better than LZMA2.
+
+    XZ Utils supports multithreaded compression. XZ Utils doesn't support
+    multithreaded decompression yet. It has been planned though and taken
+    into account when designing the .xz file format. In the future, files
+    that were created in threaded mode can be decompressed in threaded
+    mode too.
+
+
+1. Documentation
+----------------
+
+1.1. Overall documentation
+
+    README              This file
+
+    INSTALL.generic     Generic install instructions for those not familiar
+                        with packages using GNU Autotools
+    INSTALL             Installation instructions specific to XZ Utils
+    PACKAGERS           Information to packagers of XZ Utils
+
+    COPYING             XZ Utils copyright and license information
+    COPYING.GPLv2       GNU General Public License version 2
+    COPYING.GPLv3       GNU General Public License version 3
+    COPYING.LGPLv2.1    GNU Lesser General Public License version 2.1
+
+    AUTHORS             The main authors of XZ Utils
+    THANKS              Incomplete list of people who have helped making
+                        this software
+    NEWS                User-visible changes between XZ Utils releases
+    ChangeLog           Detailed list of changes (commit log)
+    TODO                Known bugs and some sort of to-do list
+
+    Note that only some of the above files are included in binary
+    packages.
+
+
+1.2. Documentation for command-line tools
+
+    The command-line tools are documented as man pages. In source code
+    releases (and possibly also in some binary packages), the man pages
+    are also provided in plain text (ASCII only) and PDF formats in the
+    directory "doc/man" to make the man pages more accessible to those
+    whose operating system doesn't provide an easy way to view man pages.
+
+
+1.3. Documentation for liblzma
+
+    The liblzma API headers include short docs about each function
+    and data type as Doxygen tags. These docs should be quite OK as
+    a quick reference.
+
+    There are a few example/tutorial programs that should help in
+    getting started with liblzma. In the source package the examples
+    are in "doc/examples" and in binary packages they may be under
+    "examples" in the same directory as this README.
+
+    Since the liblzma API has similarities to the zlib API, some people
+    may find it useful to read the zlib docs and tutorial too:
+
+        http://zlib.net/manual.html
+        http://zlib.net/zlib_how.html
+
+
+2. Version numbering
+--------------------
+
+    The version number format of XZ Utils is X.Y.ZS:
+
+      - X is the major version. When this is incremented, the library
+        API and ABI break.
+
+      - Y is the minor version. It is incremented when new features
+        are added without breaking the existing API or ABI. An even Y
+        indicates a stable release and an odd Y indicates unstable
+        (alpha or beta version).
+
+      - Z is the revision. This has a different meaning for stable and
+        unstable releases:
+
+          * Stable: Z is incremented when bugs get fixed without adding
+            any new features. This is intended to be convenient for
+            downstream distributors that want bug fixes but don't want
+            any new features to minimize the risk of introducing new bugs.
+
+          * Unstable: Z is just a counter. API or ABI of features added
+            in earlier unstable releases having the same X.Y may break.
+
+      - S indicates stability of the release. It is missing from the
+        stable releases, where Y is an even number. When Y is odd, S
+        is either "alpha" or "beta" to make it very clear that such
+        versions are not stable releases. The same X.Y.Z combination is
+        not used for more than one stability level, i.e. after X.Y.Zalpha,
+        the next version can be X.Y.(Z+1)beta but not X.Y.Zbeta.
+
+
+3. Reporting bugs
+-----------------
+
+    Naturally it is easiest for me if you already know what causes the
+    unexpected behavior. Even better if you have a patch to propose.
+    However, quite often the reason for unexpected behavior is unknown,
+    so here are a few things to do before sending a bug report:
+
+      1. Try to create a small example how to reproduce the issue.
+
+      2. Compile XZ Utils with debugging code using configure switches
+         --enable-debug and, if possible, --disable-shared. If you are
+         using GCC, use CFLAGS='-O0 -ggdb3'. Don't strip the resulting
+         binaries.
+
+      3. Turn on core dumps. The exact command depends on your shell;
+         for example in GNU bash it is done with "ulimit -c unlimited",
+         and in tcsh with "limit coredumpsize unlimited".
+
+      4. Try to reproduce the suspected bug. If you get "assertion failed"
+         message, be sure to include the complete message in your bug
+         report. If the application leaves a coredump, get a backtrace
+         using gdb:
+           $ gdb /path/to/app-binary   # Load the app to the debugger.
+           (gdb) core core   # Open the coredump.
+           (gdb) bt   # Print the backtrace. Copy & paste to bug report.
+           (gdb) quit   # Quit gdb.
+
+    Report your bug via email or IRC (see Contact information below).
+    Don't send core dump files or any executables. If you have a small
+    example file(s) (total size less than 256 KiB), please include
+    it/them as an attachment. If you have bigger test files, put them
+    online somewhere and include a URL to the file(s) in the bug report.
+
+    Always include the exact version number of XZ Utils in the bug report.
+    If you are using a snapshot from the git repository, use "git describe"
+    to get the exact snapshot version. If you are using XZ Utils shipped
+    in an operating system distribution, mention the distribution name,
+    distribution version, and exact xz package version; if you cannot
+    repeat the bug with the code compiled from unpatched source code,
+    you probably need to report a bug to your distribution's bug tracking
+    system.
+
+
+4. Translations
+---------------
+
+    The xz command line tool and all man pages can be translated.
+    The translations are handled via the Translation Project. If you
+    wish to help translating xz, please join the Translation Project:
+
+        https://translationproject.org/html/translators.html
+
+    Below are notes and testing instructions specific to xz
+    translations.
+
+    Testing can be done by installing xz into a temporary directory:
+
+        ./configure --disable-shared --prefix=/tmp/xz-test
+        # <Edit the .po file in the po directory.>
+        make -C po update-po
+        make install
+        bash debug/translation.bash | less
+        bash debug/translation.bash | less -S  # For --list outputs
+
+    Repeat the above as needed (no need to re-run configure though).
+
+    Note especially the following:
+
+      - The output of --help and --long-help must look nice on
+        an 80-column terminal. It's OK to add extra lines if needed.
+
+      - In contrast, don't add extra lines to error messages and such.
+        They are often preceded with e.g. a filename on the same line,
+        so you have no way to predict where to put a \n. Let the terminal
+        do the wrapping even if it looks ugly. Adding new lines will be
+        even uglier in the generic case even if it looks nice in a few
+        limited examples.
+
+      - Be careful with column alignment in tables and table-like output
+        (--list, --list --verbose --verbose, --info-memory, --help, and
+        --long-help):
+
+          * All descriptions of options in --help should start in the
+            same column (but it doesn't need to be the same column as
+            in the English messages; just be consistent if you change it).
+            Check that both --help and --long-help look OK, since they
+            share several strings.
+
+          * --list --verbose and --info-memory print lines that have
+            the format "Description:   %s". If you need a longer
+            description, you can put extra space between the colon
+            and %s. Then you may need to add extra space to other
+            strings too so that the result as a whole looks good (all
+            values start at the same column).
+
+          * The columns of the actual tables in --list --verbose --verbose
+            should be aligned properly. Abbreviate if necessary. It might
+            be good to keep at least 2 or 3 spaces between column headings
+            and avoid spaces in the headings so that the columns stand out
+            better, but this is a matter of opinion. Do what you think
+            looks best.
+
+      - Be careful to put a period at the end of a sentence when the
+        original version has it, and don't put it when the original
+        doesn't have it. Similarly, be careful with \n characters
+        at the beginning and end of the strings.
+
+      - Read the TRANSLATORS comments that have been extracted from the
+        source code and included in xz.pot. Some comments suggest
+        testing with a specific command which needs an .xz file. You
+        may use e.g. any tests/files/good-*.xz. However, these test
+        commands are included in translations.bash output, so reading
+        translations.bash output carefully can be enough.
+
+      - If you find language problems in the original English strings,
+        feel free to suggest improvements. Ask if something is unclear.
+
+      - The translated messages should be understandable (sometimes this
+        may be a problem with the original English messages too). Don't
+        make a direct word-by-word translation from English especially if
+        the result doesn't sound good in your language.
+
+    Thanks for your help!
+
+
+5. Other implementations of the .xz format
+------------------------------------------
+
+    7-Zip and the p7zip port of 7-Zip support the .xz format starting
+    from the version 9.00alpha.
+
+        http://7-zip.org/
+        http://p7zip.sourceforge.net/
+
+    XZ Embedded is a limited implementation written for use in the Linux
+    kernel, but it is also suitable for other embedded use.
+
+        https://tukaani.org/xz/embedded.html
+
+
+6. Contact information
+----------------------
+
+    If you have questions, bug reports, patches etc. related to XZ Utils,
+    contact Lasse Collin <[email protected]> (in Finnish or English).
+    I'm sometimes slow at replying. If you haven't got a reply within two
+    weeks, assume that your email has got lost and resend it or use IRC.
+
+    You can find me also from #tukaani on Freenode; my nick is Larhzu.
+    The channel tends to be pretty quiet, so just ask your question and
+    someone may wake up.
+

+ 142 - 0
xz.mod/xz/THANKS

@@ -0,0 +1,142 @@
+
+Thanks
+======
+
+Some people have helped more, some less, but nevertheless everyone's help
+has been important. :-) In alphabetical order:
+  - Mark Adler
+  - H. Peter Anvin
+  - Jeff Bastian
+  - Nelson H. F. Beebe
+  - Karl Berry
+  - Anders F. Björklund
+  - Emmanuel Blot
+  - Melanie Blower
+  - Martin Blumenstingl
+  - Ben Boeckel
+  - Jakub Bogusz
+  - Adam Borowski
+  - Maarten Bosmans
+  - Trent W. Buck
+  - James Buren
+  - David Burklund
+  - Daniel Mealha Cabrita
+  - Milo Casagrande
+  - Marek Černocký
+  - Tomer Chachamu
+  - Antoine Cœur
+  - Gabi Davar
+  - Chris Donawa
+  - Andrew Dudman
+  - Markus Duft
+  - İsmail Dönmez
+  - Robert Elz
+  - Gilles Espinasse
+  - Denis Excoffier
+  - Michael Felt
+  - Michael Fox
+  - Mike Frysinger
+  - Daniel Richard G.
+  - Bjarni Ingi Gislason
+  - Bill Glessner
+  - Jason Gorski
+  - Juan Manuel Guerrero
+  - Diederik de Haas
+  - Joachim Henke
+  - Christian Hesse
+  - Vincenzo Innocente
+  - Peter Ivanov
+  - Jouk Jansen
+  - Jun I Jin
+  - Kiyoshi Kanazawa
+  - Per Øyvind Karlsen
+  - Thomas Klausner
+  - Richard Koch
+  - Ville Koskinen
+  - Jan Kratochvil
+  - Christian Kujau
+  - Stephan Kulow
+  - Peter Lawler
+  - James M Leddy
+  - Vincent Lefevre
+  - Hin-Tak Leung
+  - Andraž 'ruskie' Levstik
+  - Cary Lewis
+  - Wim Lewis
+  - Xin Li
+  - Eric Lindblad
+  - Lorenzo De Liso
+  - H.J. Lu
+  - Bela Lubkin
+  - Gregory Margo
+  - Julien Marrec
+  - Martin Matuška
+  - Jim Meyering
+  - Arkadiusz Miskiewicz
+  - Nathan Moinvaziri
+  - Étienne Mollier
+  - Conley Moorhous
+  - Rafał Mużyło
+  - Adrien Nader
+  - Evan Nemerson
+  - Hongbo Ni
+  - Jonathan Nieder
+  - Andre Noll
+  - Peter O'Gorman
+  - Daniel Packard
+  - Filip Palian
+  - Peter Pallinger
+  - Rui Paulo
+  - Igor Pavlov
+  - Diego Elio Pettenò
+  - Elbert Pol
+  - Mikko Pouru
+  - Rich Prohaska
+  - Trần Ngọc Quân
+  - Pavel Raiskup
+  - Ole André Vadla Ravnås
+  - Eric S. Raymond
+  - Robert Readman
+  - Bernhard Reutner-Fischer
+  - Markus Rickert
+  - Cristian Rodríguez
+  - Christian von Roques
+  - Torsten Rupp
+  - Jukka Salmi
+  - Alexandre Sauvé
+  - Benno Schulenberg
+  - Andreas Schwab
+  - Bhargava Shastry
+  - Dan Shechter
+  - Stuart Shelton
+  - Sebastian Andrzej Siewior
+  - Brad Smith
+  - Bruce Stark
+  - Pippijn van Steenhoven
+  - Jonathan Stott
+  - Dan Stromberg
+  - Vincent Torri
+  - Paul Townsend
+  - Mohammed Adnène Trojette
+  - Alexey Tourbin
+  - Loganaden Velvindron
+  - Patrick J. Volkerding
+  - Martin Väth
+  - Adam Walling
+  - Jeffrey Walton
+  - Christian Weisgerber
+  - Bert Wesarg
+  - Fredrik Wikstrom
+  - Jim Wilcoxson
+  - Ralf Wildenhues
+  - Charles Wilson
+  - Lars Wirzenius
+  - Pilorz Wojciech
+  - Ryan Young
+  - Andreas Zieringer
+
+Also thanks to all the people who have participated in the Tukaani project.
+
+I have probably forgot to add some names to the above list. Sorry about
+that and thanks for your help.
+

+ 111 - 0
xz.mod/xz/TODO

@@ -0,0 +1,111 @@
+
+XZ Utils To-Do List
+===================
+
+Known bugs
+----------
+
+    The test suite is too incomplete.
+
+    If the memory usage limit is less than about 13 MiB, xz is unable to
+    automatically scale down the compression settings enough even though
+    it would be  possible by switching from BT2/BT3/BT4 match finder to
+    HC3/HC4.
+
+    XZ Utils compress some files significantly worse than LZMA Utils.
+    This is due to faster compression presets used by XZ Utils, and
+    can often be worked around by using "xz --extreme". With some files
+    --extreme isn't enough though: it's most likely with files that
+    compress extremely well, so going from compression ratio of 0.003
+    to 0.004 means big relative increase in the compressed file size.
+
+    xz doesn't quote unprintable characters when it displays file names
+    given on the command line.
+
+    tuklib_exit() doesn't block signals => EINTR is possible.
+
+    SIGTSTP is not handled. If xz is stopped, the estimated remaining
+    time and calculated (de)compression speed won't make sense in the
+    progress indicator (xz --verbose).
+
+    If liblzma has created threads and fork() gets called, liblzma
+    code will break in the child process unless it calls exec() and
+    doesn't touch liblzma.
+
+
+Missing features
+----------------
+
+    Add support for storing metadata in .xz files. A preliminary
+    idea is to create a new Stream type for metadata. When both
+    metadata and data are wanted in the same .xz file, two or more
+    Streams would be concatenated.
+
+    The state stored in lzma_stream should be cloneable, which would
+    be mostly useful when using a preset dictionary in LZMA2, but
+    it may have other uses too. Compare to deflateCopy() in zlib.
+
+    Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and
+    other streams that don't have an end of payload marker.
+
+    Adjust dictionary size when the input file size is known.
+    Maybe do this only if an option is given.
+
+    xz doesn't support copying extended attributes, access control
+    lists etc. from source to target file.
+
+    Multithreaded compression:
+      - Reduce memory usage of the current method.
+      - Implement threaded match finders.
+      - Implement pigz-style threading in LZMA2.
+
+    Multithreaded decompression
+
+    Buffer-to-buffer coding could use less RAM (especially when
+    decompressing LZMA1 or LZMA2).
+
+    I/O library is not implemented (similar to gzopen() in zlib).
+    It will be a separate library that supports uncompressed, .gz,
+    .bz2, .lzma, and .xz files.
+
+    Support changing lzma_options_lzma.mode with lzma_filters_update().
+
+    Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at
+    Block and Stream boundaries.
+
+    lzma_strerror() to convert lzma_ret to human readable form?
+    This is tricky, because the same error codes are used with
+    slightly different meanings, and this cannot be fixed anymore.
+
+    Make it possible to adjust LZMA2 options in the middle of a Block
+    so that the encoding speed vs. compression ratio can be optimized
+    when the compressed data is streamed over network.
+
+    Improved BCJ filters. The current filters are small but they aren't
+    so great when compressing binary packages that contain various file
+    types. Specifically, they make things worse if there are static
+    libraries or Linux kernel modules. The filtering could also be
+    more effective (without getting overly complex), for example,
+    streamable variant BCJ2 from 7-Zip could be implemented.
+
+    Filter that autodetects specific data types in the input stream
+    and applies appropriate filters for the corrects parts of the input.
+    Perhaps combine this with the BCJ filter improvement point above.
+
+    Long-range LZ77 method as a separate filter or as a new LZMA2
+    match finder.
+
+
+Documentation
+-------------
+
+    More tutorial programs are needed for liblzma.
+
+    Document the LZMA1 and LZMA2 algorithms.
+
+
+Miscellaneous
+------------
+
+    Try to get the media type for .xz registered at IANA.
+

+ 33 - 0
xz.mod/xz/autogen.sh

@@ -0,0 +1,33 @@
+#!/bin/sh
+
+###############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+###############################################################################
+
+set -e -x
+
+# The following six lines are almost identical to "autoreconf -fi" but faster.
+${AUTOPOINT:-autopoint} -f
+${LIBTOOLIZE:-libtoolize} -c -f || glibtoolize -c -f
+${ACLOCAL:-aclocal} -I m4
+${AUTOCONF:-autoconf}
+${AUTOHEADER:-autoheader}
+${AUTOMAKE:-automake} -acf --foreign
+
+# Generate the translated man pages if the "po4a" tool is available.
+# This is *NOT* done by "autoreconf -fi" or when "make" is run.
+#
+# 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

+ 58 - 0
xz.mod/xz/build-aux/manconv.sh

@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+###############################################################################
+#
+# Wrapper for GNU groff to convert man pages to a few formats
+#
+# Usage: manconv.sh FORMAT [PAPER_SIZE] < in.1 > out.suffix
+#
+# FORMAT can be ascii, utf8, ps, or pdf. PAPER_SIZE can be anything that
+# groff accepts, e.g. a4 or letter. See groff_font(5). PAPER_SIZE defaults
+# to a4 and is used only when FORMAT is ps (PostScript) or pdf.
+#
+# Multiple man pages can be given at once e.g. to create a single PDF file
+# with continuous page numbering.
+#
+###############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+###############################################################################
+
+FORMAT=$1
+PAPER=${2-a4}
+
+# Make PostScript and PDF output more readable:
+#   - Use 11 pt font instead of the default 10 pt.
+#   - Use larger paragraph spacing than the default 0.4v (man(7) only).
+FONT=11
+PD=0.8
+
+SED_PD="
+/^\\.TH /s/\$/\\
+.PD $PD/
+s/^\\.PD\$/.PD $PD/"
+
+case $FORMAT in
+	ascii)
+		groff -t -mandoc -Tascii | col -bx
+		;;
+	utf8)
+		groff -t -mandoc -Tutf8 | col -bx
+		;;
+	ps)
+		sed "$SED_PD" | groff -dpaper=$PAPER -t -mandoc \
+				-rC1 -rS$FONT -Tps -P-p$PAPER
+		;;
+	pdf)
+		sed "$SED_PD" | groff -dpaper=$PAPER -t -mandoc \
+				-rC1 -rS$FONT -Tps -P-p$PAPER | ps2pdf - -
+		;;
+	*)
+		echo 'Invalid arguments' >&2
+		exit 1
+		;;
+esac

+ 24 - 0
xz.mod/xz/build-aux/version.sh

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+#############################################################################
+#
+# Get the version string from version.h and print it out without
+# trailing newline. This makes it suitable for use in configure.ac.
+#
+#############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+#############################################################################
+
+sed -n 's/LZMA_VERSION_STABILITY_ALPHA/alpha/
+	s/LZMA_VERSION_STABILITY_BETA/beta/
+	s/LZMA_VERSION_STABILITY_STABLE//
+	s/^#define LZMA_VERSION_[MPS][AIT][AJNT][A-Z]* //p' \
+	src/liblzma/api/lzma/version.h \
+	| tr '\n' '|' \
+	| sed 's/|/./; s/|/./; s/|//g' \
+	| tr -d '\r\n'

+ 49 - 0
xz.mod/xz/cmake/tuklib_common.cmake

@@ -0,0 +1,49 @@
+#
+# tuklib_common.cmake - common functions and macros for tuklib_*.cmake files
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+function(tuklib_add_definitions TARGET_OR_ALL DEFINITIONS)
+    # DEFINITIONS may be an empty string/list but it's fine here. There is
+    # no need to quote ${DEFINITIONS} as empty arguments are fine here.
+    if(TARGET_OR_ALL STREQUAL "ALL")
+        add_compile_definitions(${DEFINITIONS})
+    else()
+        target_compile_definitions("${TARGET_OR_ALL}" PRIVATE ${DEFINITIONS})
+    endif()
+endfunction()
+
+function(tuklib_add_definition_if TARGET_OR_ALL VAR)
+    if(${VAR})
+        tuklib_add_definitions("${TARGET_OR_ALL}" "${VAR}")
+    endif()
+endfunction()
+
+# This is an over-simplified version of AC_USE_SYSTEM_EXTENSIONS in Autoconf
+# or gl_USE_SYSTEM_EXTENSIONS in gnulib.
+macro(tuklib_use_system_extensions TARGET_OR_ALL)
+    if(NOT WIN32)
+        # FIXME? The Solaris-specific __EXTENSIONS__ should be conditional
+        #        even on Solaris. See gnulib: git log m4/extensions.m4.
+        # FIXME? gnulib and autoconf.git has lots of new stuff.
+        tuklib_add_definitions("${TARGET_OR_ALL}"
+            _GNU_SOURCE
+            __EXTENSIONS__
+            _POSIX_PTHREAD_SEMANTICS
+            _TANDEM_SOURCE
+            _ALL_SOURCE
+        )
+
+        list(APPEND CMAKE_REQUIRED_DEFINITIONS
+            -D_GNU_SOURCE
+            -D__EXTENSIONS__
+            -D_POSIX_PTHREAD_SEMANTICS
+            -D_TANDEM_SOURCE
+            -D_ALL_SOURCE
+        )
+    endif()
+endmacro()

+ 175 - 0
xz.mod/xz/cmake/tuklib_cpucores.cmake

@@ -0,0 +1,175 @@
+#
+# tuklib_cpucores.cmake - see tuklib_cpucores.m4 for description and comments
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake")
+include(CheckCSourceCompiles)
+include(CheckIncludeFile)
+
+function(tuklib_cpucores_internal_check)
+    if(WIN32 OR CYGWIN)
+        # Nothing to do, the tuklib_cpucores.c handles it.
+        set(TUKLIB_CPUCORES_DEFINITIONS "" CACHE INTERNAL "")
+        return()
+    endif()
+
+    # glibc-based systems (GNU/Linux and GNU/kFreeBSD) have
+    # sched_getaffinity(). The CPU_COUNT() macro was added in glibc 2.9.
+    # glibc 2.9 is old enough that if someone uses the code on older glibc,
+    # the fallback to sysconf() should be good enough.
+    #
+    # NOTE: This required that _GNU_SOURCE is defined. We assume that whatever
+    #       feature test macros the caller wants to use are already set in
+    #       CMAKE_REQUIRED_DEFINES and in the target defines.
+    check_c_source_compiles("
+            #include <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)
+            {
+                int name[2] = { CTL_HW, HW_NCPU };
+                int cpus;
+                size_t cpus_size = sizeof(cpus);
+                sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
+                return 0;
+            }
+        "
+        TUKLIB_CPUCORES_SYSCTL)
+    if(TUKLIB_CPUCORES_SYSCTL)
+        if(HAVE_SYS_PARAM_H)
+            set(TUKLIB_CPUCORES_DEFINITIONS
+                "HAVE_PARAM_H;TUKLIB_CPUCORES_SYSCTL"
+                CACHE INTERNAL "")
+        else()
+            set(TUKLIB_CPUCORES_DEFINITIONS
+                "TUKLIB_CPUCORES_SYSCTL"
+                CACHE INTERNAL "")
+        endif()
+        return()
+    endif()
+
+    # Many platforms support sysconf().
+    check_c_source_compiles("
+            #include <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 - 0
xz.mod/xz/cmake/tuklib_integer.cmake

@@ -0,0 +1,102 @@
+#
+# tuklib_integer.cmake - see tuklib_integer.m4 for description and comments
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake")
+include(TestBigEndian)
+include(CheckCSourceCompiles)
+include(CheckIncludeFile)
+include(CheckSymbolExists)
+
+function(tuklib_integer TARGET_OR_ALL)
+    # Check for endianness. Unlike the Autoconf's AC_C_BIGENDIAN, this doesn't
+    # support Apple universal binaries. The CMake module will leave the
+    # variable unset so we can catch that situation here instead of continuing
+    # as if we were little endian.
+    test_big_endian(WORDS_BIGENDIAN)
+    if(NOT DEFINED WORDS_BIGENDIAN)
+        message(FATAL_ERROR "Cannot determine endianness")
+    endif()
+    tuklib_add_definition_if("${TARGET_OR_ALL}" WORDS_BIGENDIAN)
+
+    # Look for a byteswapping method.
+    check_c_source_compiles("
+            int main(void)
+            {
+                __builtin_bswap16(1);
+                __builtin_bswap32(1);
+                __builtin_bswap64(1);
+                return 0;
+            }
+        "
+        HAVE___BUILTIN_BSWAPXX)
+    if(HAVE___BUILTIN_BSWAPXX)
+        tuklib_add_definitions("${TARGET_OR_ALL}" HAVE___BUILTIN_BSWAPXX)
+    else()
+        check_include_file(byteswap.h HAVE_BYTESWAP_H)
+        if(HAVE_BYTESWAP_H)
+            tuklib_add_definitions("${TARGET_OR_ALL}" HAVE_BYTESWAP_H)
+            check_symbol_exists(bswap_16 byteswap.h HAVE_BSWAP_16)
+            tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_16)
+            check_symbol_exists(bswap_32 byteswap.h HAVE_BSWAP_32)
+            tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_32)
+            check_symbol_exists(bswap_64 byteswap.h HAVE_BSWAP_64)
+            tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_BSWAP_64)
+        else()
+            check_include_file(sys/endian.h HAVE_SYS_ENDIAN_H)
+            if(HAVE_SYS_ENDIAN_H)
+                tuklib_add_definitions("${TARGET_OR_ALL}" HAVE_SYS_ENDIAN_H)
+            else()
+                check_include_file(sys/byteorder.h HAVE_SYS_BYTEORDER_H)
+                tuklib_add_definition_if("${TARGET_OR_ALL}"
+                                         HAVE_SYS_BYTEORDER_H)
+            endif()
+        endif()
+    endif()
+
+    # 16-bit and 32-bit unaligned access is fast on x86(-64),
+    # big endian PowerPC, and usually on 32/64-bit ARM too.
+    # There are others too and ARM could be a false match.
+    #
+    # Guess the default value for the option.
+    # CMake's ability to give info about the target arch seems bad.
+    # The the same arch can have different name depending on the OS.
+    #
+    # FIXME: The regex is based on guessing, not on factual information!
+    #
+    # NOTE: Compared to the Autoconf test, this lacks the GCC/Clang test
+    #       on ARM and always assumes that unaligned is fast on ARM.
+    set(FAST_UNALIGNED_GUESS OFF)
+    if(CMAKE_SYSTEM_PROCESSOR MATCHES
+       "[Xx3456]86|^[Xx]64|^[Aa][Mm][Dd]64|^[Aa][Rr][Mm]|^aarch|^powerpc|^ppc")
+        if(NOT WORDS_BIGENDIAN OR
+           NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc|^ppc")
+           set(FAST_UNALIGNED_GUESS ON)
+        endif()
+    endif()
+    option(TUKLIB_FAST_UNALIGNED_ACCESS
+           "Enable if the system supports *fast* unaligned memory access \
+with 16-bit and 32-bit integers."
+           "${FAST_UNALIGNED_GUESS}")
+    tuklib_add_definition_if("${TARGET_OR_ALL}" TUKLIB_FAST_UNALIGNED_ACCESS)
+
+    # Unsafe type punning:
+    option(TUKLIB_USE_UNSAFE_TYPE_PUNNING
+           "This introduces strict aliasing violations and \
+may result in broken code. However, this might improve performance \
+in some cases, especially with old compilers \
+(e.g. GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7)."
+           OFF)
+    tuklib_add_definition_if("${TARGET_OR_ALL}" TUKLIB_USE_UNSAFE_TYPE_PUNNING)
+
+    # Check for GCC/Clang __builtin_assume_aligned().
+    check_c_source_compiles(
+        "int main(void) { __builtin_assume_aligned(\"\", 1); return 0; }"
+        HAVE___BUILTIN_ASSUME_ALIGNED)
+    tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE___BUILTIN_ASSUME_ALIGNED)
+endfunction()

+ 20 - 0
xz.mod/xz/cmake/tuklib_mbstr.cmake

@@ -0,0 +1,20 @@
+#
+# tuklib_mbstr.cmake - see tuklib_mbstr.m4 for description and comments
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake")
+include(CheckSymbolExists)
+
+function(tuklib_mbstr TARGET_OR_ALL)
+    check_symbol_exists(mbrtowc wchar.h HAVE_MBRTOWC)
+    tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_MBRTOWC)
+
+    # NOTE: wcwidth() requires _GNU_SOURCE or _XOPEN_SOURCE on GNU/Linux.
+    check_symbol_exists(wcwidth wchar.h HAVE_WCWIDTH)
+    tuklib_add_definition_if("${TARGET_OR_ALL}" HAVE_WCWIDTH)
+endfunction()

+ 150 - 0
xz.mod/xz/cmake/tuklib_physmem.cmake

@@ -0,0 +1,150 @@
+#
+# tuklib_physmem.cmake - see tuklib_physmem.m4 for description and comments
+#
+# NOTE: Compared tuklib_physmem.m4, this lacks support for Tru64, IRIX, and
+# Linux sysinfo() (usually sysconf() is used on GNU/Linux).
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake")
+include(CheckCSourceCompiles)
+include(CheckIncludeFile)
+
+function(tuklib_physmem_internal_check)
+    # Shortcut on Windows:
+    if(WIN32 OR CYGWIN)
+        # Nothing to do, the tuklib_physmem.c handles it.
+        set(TUKLIB_PHYSMEM_DEFINITIONS "" CACHE INTERNAL "")
+        return()
+    endif()
+
+    # Full check for special cases:
+    check_c_source_compiles("
+            #if defined(_WIN32) || defined(__CYGWIN__) || defined(__OS2__) \
+                || defined(__DJGPP__) || defined(__VMS) \
+                || defined(AMIGA) || defined(__AROS__) || defined(__QNX__)
+            int main(void) { return 0; }
+            #else
+            compile error
+            #endif
+        "
+        TUKLIB_PHYSMEM_SPECIAL)
+    if(TUKLIB_PHYSMEM_SPECIAL)
+        # Nothing to do, the tuklib_physmem.c handles it.
+        set(TUKLIB_PHYSMEM_DEFINITIONS "" CACHE INTERNAL "")
+        return()
+    endif()
+
+    # Look for AIX-specific solution before sysconf(), because the test
+    # for sysconf() will pass on AIX but won't actually work
+    # (sysconf(_SC_PHYS_PAGES) compiles but always returns -1 on AIX).
+    check_c_source_compiles("
+            #include <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()

+ 19 - 0
xz.mod/xz/cmake/tuklib_progname.cmake

@@ -0,0 +1,19 @@
+#
+# tuklib_progname.cmake - see tuklib_progname.m4 for description and comments
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+include("${CMAKE_CURRENT_LIST_DIR}/tuklib_common.cmake")
+include(CheckSymbolExists)
+
+function(tuklib_progname TARGET_OR_ALL)
+    # NOTE: This glibc extension requires _GNU_SOURCE.
+    check_symbol_exists(program_invocation_name errno.h
+                        HAVE_DECL_PROGRAM_INVOCATION_NAME)
+    tuklib_add_definition_if("${TARGET_OR_ALL}"
+                             HAVE_DECL_PROGRAM_INVOCATION_NAME)
+endfunction()

+ 940 - 0
xz.mod/xz/configure.ac

@@ -0,0 +1,940 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+###############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+###############################################################################
+
+# NOTE: Don't add useless checks. autoscan detects this and that, but don't
+# let it confuse you. For example, we don't care about checking for behavior
+# of malloc(), stat(), or lstat(), since we don't use those functions in
+# a way that would cause the problems the autoconf macros check.
+
+AC_PREREQ([2.69])
+
+AC_INIT([XZ Utils], m4_esyscmd([/bin/sh build-aux/version.sh]),
+	[[email protected]], [xz], [https://tukaani.org/xz/])
+AC_CONFIG_SRCDIR([src/liblzma/common/common.h])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADER([config.h])
+
+echo
+echo "$PACKAGE_STRING"
+
+echo
+echo "System type:"
+# This is needed to know if assembler optimizations can be used.
+AC_CANONICAL_HOST
+
+# We do some special things on Windows (32-bit or 64-bit) builds.
+case $host_os in
+	mingw* | cygwin | msys) is_w32=yes ;;
+	*)                      is_w32=no ;;
+esac
+AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
+
+# We need to use $EXEEXT with $(LN_S) when creating symlinks to
+# executables. Cygwin is an exception to this, since it is recommended
+# that symlinks don't have the .exe suffix. To make this work, we
+# 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
+	cygwin | msys)  LN_EXEEXT= ;;
+	*)              LN_EXEEXT='$(EXEEXT)' ;;
+esac
+AC_SUBST([LN_EXEEXT])
+
+echo
+echo "Configure options:"
+AM_CFLAGS=
+
+
+#############
+# Debugging #
+#############
+
+AC_MSG_CHECKING([if debugging code should be compiled])
+AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [Enable debugging code.]),
+	[], enable_debug=no)
+if test "x$enable_debug" = xyes; then
+	AC_MSG_RESULT([yes])
+else
+	AC_DEFINE([NDEBUG], [1], [Define to 1 to disable debugging code.])
+	AC_MSG_RESULT([no])
+fi
+
+
+###########
+# Filters #
+###########
+
+m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,sparc])dnl
+m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,sparc])
+m4_define([LZ_FILTERS], [lzma1,lzma2])
+
+m4_foreach([NAME], [SUPPORTED_FILTERS],
+[enable_filter_[]NAME=no
+enable_encoder_[]NAME=no
+enable_decoder_[]NAME=no
+])dnl
+
+AC_MSG_CHECKING([which encoders to build])
+AC_ARG_ENABLE([encoders], AS_HELP_STRING([--enable-encoders=LIST],
+		[Comma-separated list of encoders to build. Default=all.
+		Available encoders:]
+			m4_translit(m4_defn([SUPPORTED_FILTERS]), [,], [ ])),
+	[], [enable_encoders=SUPPORTED_FILTERS])
+enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'`
+if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then
+	enable_encoders=no
+	AC_MSG_RESULT([(none)])
+else
+	for arg in $enable_encoders
+	do
+		case $arg in m4_foreach([NAME], [SUPPORTED_FILTERS], [
+			NAME)
+				enable_filter_[]NAME=yes
+				enable_encoder_[]NAME=yes
+				AC_DEFINE(HAVE_ENCODER_[]m4_toupper(NAME), [1],
+				[Define to 1 if] NAME [encoder is enabled.])
+				;;])
+			*)
+				AC_MSG_RESULT([])
+				AC_MSG_ERROR([unknown filter: $arg])
+				;;
+		esac
+	done
+	AC_DEFINE([HAVE_ENCODERS], [1],
+		[Define to 1 if any of HAVE_ENCODER_foo have been defined.])
+	AC_MSG_RESULT([$enable_encoders])
+fi
+
+AC_MSG_CHECKING([which decoders to build])
+AC_ARG_ENABLE([decoders], AS_HELP_STRING([--enable-decoders=LIST],
+		[Comma-separated list of decoders to build. Default=all.
+		Available decoders are the same as available encoders.]),
+	[], [enable_decoders=SUPPORTED_FILTERS])
+enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'`
+if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then
+	enable_decoders=no
+	AC_MSG_RESULT([(none)])
+else
+	for arg in $enable_decoders
+	do
+		case $arg in m4_foreach([NAME], [SUPPORTED_FILTERS], [
+			NAME)
+				enable_filter_[]NAME=yes
+				enable_decoder_[]NAME=yes
+				AC_DEFINE(HAVE_DECODER_[]m4_toupper(NAME), [1],
+				[Define to 1 if] NAME [decoder is enabled.])
+				;;])
+			*)
+				AC_MSG_RESULT([])
+				AC_MSG_ERROR([unknown filter: $arg])
+				;;
+		esac
+	done
+	AC_DEFINE([HAVE_DECODERS], [1],
+		[Define to 1 if any of HAVE_DECODER_foo have been defined.])
+	AC_MSG_RESULT([$enable_decoders])
+fi
+
+if test "x$enable_encoder_lzma2$enable_encoder_lzma1" = xyesno \
+		|| test "x$enable_decoder_lzma2$enable_decoder_lzma1" = xyesno; then
+	AC_MSG_ERROR([LZMA2 requires that LZMA1 is also enabled.])
+fi
+
+AM_CONDITIONAL(COND_MAIN_ENCODER, test "x$enable_encoders" != xno)
+AM_CONDITIONAL(COND_MAIN_DECODER, test "x$enable_decoders" != xno)
+
+m4_foreach([NAME], [SUPPORTED_FILTERS],
+[AM_CONDITIONAL(COND_FILTER_[]m4_toupper(NAME), test "x$enable_filter_[]NAME" = xyes)
+AM_CONDITIONAL(COND_ENCODER_[]m4_toupper(NAME), test "x$enable_encoder_[]NAME" = xyes)
+AM_CONDITIONAL(COND_DECODER_[]m4_toupper(NAME), test "x$enable_decoder_[]NAME" = xyes)
+])dnl
+
+# The so called "simple filters" share common code.
+enable_filter_simple=no
+enable_encoder_simple=no
+enable_decoder_simple=no
+m4_foreach([NAME], [SIMPLE_FILTERS],
+[test "x$enable_filter_[]NAME" = xyes && enable_filter_simple=yes
+test "x$enable_encoder_[]NAME" = xyes && enable_encoder_simple=yes
+test "x$enable_decoder_[]NAME" = xyes && enable_decoder_simple=yes
+])dnl
+AM_CONDITIONAL(COND_FILTER_SIMPLE, test "x$enable_filter_simple" = xyes)
+AM_CONDITIONAL(COND_ENCODER_SIMPLE, test "x$enable_encoder_simple" = xyes)
+AM_CONDITIONAL(COND_DECODER_SIMPLE, test "x$enable_decoder_simple" = xyes)
+
+# LZ-based filters share common code.
+enable_filter_lz=no
+enable_encoder_lz=no
+enable_decoder_lz=no
+m4_foreach([NAME], [LZ_FILTERS],
+[test "x$enable_filter_[]NAME" = xyes && enable_filter_lz=yes
+test "x$enable_encoder_[]NAME" = xyes && enable_encoder_lz=yes
+test "x$enable_decoder_[]NAME" = xyes && enable_decoder_lz=yes
+])dnl
+AM_CONDITIONAL(COND_FILTER_LZ, test "x$enable_filter_lz" = xyes)
+AM_CONDITIONAL(COND_ENCODER_LZ, test "x$enable_encoder_lz" = xyes)
+AM_CONDITIONAL(COND_DECODER_LZ, test "x$enable_decoder_lz" = xyes)
+
+
+#################
+# Match finders #
+#################
+
+m4_define([SUPPORTED_MATCH_FINDERS], [hc3,hc4,bt2,bt3,bt4])
+
+m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS],
+[enable_match_finder_[]NAME=no
+])
+
+AC_MSG_CHECKING([which match finders to build])
+AC_ARG_ENABLE([match-finders], AS_HELP_STRING([--enable-match-finders=LIST],
+		[Comma-separated list of match finders to build. Default=all.
+		At least one match finder is required for encoding with
+		the LZMA1 and LZMA2 filters. Available match finders:]
+		m4_translit(m4_defn([SUPPORTED_MATCH_FINDERS]), [,], [ ])), [],
+	[enable_match_finders=SUPPORTED_MATCH_FINDERS])
+enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'`
+if test "x$enable_encoder_lz" = xyes ; then
+	for arg in $enable_match_finders
+		do
+		case $arg in m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS], [
+			NAME)
+				enable_match_finder_[]NAME=yes
+				AC_DEFINE(HAVE_MF_[]m4_toupper(NAME), [1],
+				[Define to 1 to enable] NAME [match finder.])
+				;;])
+			*)
+				AC_MSG_RESULT([])
+				AC_MSG_ERROR([unknown match finder: $arg])
+				;;
+		esac
+	done
+	AC_MSG_RESULT([$enable_match_finders])
+else
+	AC_MSG_RESULT([(none because not building any LZ-based encoder)])
+fi
+
+
+####################
+# Integrity checks #
+####################
+
+m4_define([SUPPORTED_CHECKS], [crc32,crc64,sha256])
+
+m4_foreach([NAME], [SUPPORTED_CHECKS],
+[enable_check_[]NAME=no
+])dnl
+
+AC_MSG_CHECKING([which integrity checks to build])
+AC_ARG_ENABLE([checks], AS_HELP_STRING([--enable-checks=LIST],
+		[Comma-separated list of integrity checks to build.
+		Default=all. Available integrity checks:]
+		m4_translit(m4_defn([SUPPORTED_CHECKS]), [,], [ ])),
+	[], [enable_checks=SUPPORTED_CHECKS])
+enable_checks=`echo "$enable_checks" | sed 's/,/ /g'`
+if test "x$enable_checks" = xno || test "x$enable_checks" = x; then
+	AC_MSG_RESULT([(none)])
+else
+	for arg in $enable_checks
+	do
+		case $arg in m4_foreach([NAME], [SUPPORTED_CHECKS], [
+			NAME)
+				enable_check_[]NAME=yes
+				AC_DEFINE(HAVE_CHECK_[]m4_toupper(NAME), [1],
+				[Define to 1 if] NAME
+				[integrity check is enabled.])
+				;;])
+			*)
+				AC_MSG_RESULT([])
+				AC_MSG_ERROR([unknown integrity check: $arg])
+				;;
+		esac
+	done
+	AC_MSG_RESULT([$enable_checks])
+fi
+if test "x$enable_check_crc32" = xno ; then
+	AC_MSG_ERROR([For now, the CRC32 check must always be enabled.])
+fi
+
+m4_foreach([NAME], [SUPPORTED_CHECKS],
+[AM_CONDITIONAL(COND_CHECK_[]m4_toupper(NAME), test "x$enable_check_[]NAME" = xyes)
+])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 #
+###########################
+
+AC_MSG_CHECKING([if assembler optimizations should be used])
+AC_ARG_ENABLE([assembler], AS_HELP_STRING([--disable-assembler],
+		[Do not use assembler optimizations even if such exist
+		for the architecture.]),
+	[], [enable_assembler=yes])
+if test "x$enable_assembler" = xyes; then
+	enable_assembler=no
+	case $host_os in
+		# Darwin should work too but only if not creating universal
+		# binaries. Solaris x86 could work too but I cannot test.
+		linux* | *bsd* | mingw* | cygwin | msys | *djgpp*)
+			case $host_cpu in
+				i?86)   enable_assembler=x86 ;;
+				x86_64) enable_assembler=x86_64 ;;
+			esac
+			;;
+	esac
+fi
+case $enable_assembler in
+	x86 | x86_64 | no)
+		AC_MSG_RESULT([$enable_assembler])
+		;;
+	*)
+		AC_MSG_RESULT([])
+		AC_MSG_ERROR([--enable-assembler accepts only `yes', `no', `x86', or `x86_64'.])
+		;;
+esac
+AM_CONDITIONAL(COND_ASM_X86, test "x$enable_assembler" = xx86)
+AM_CONDITIONAL(COND_ASM_X86_64, test "x$enable_assembler" = xx86_64)
+
+
+#####################
+# Size optimization #
+#####################
+
+AC_MSG_CHECKING([if small size is preferred over speed])
+AC_ARG_ENABLE([small], AS_HELP_STRING([--enable-small],
+		[Make liblzma smaller and a little slower.
+		This is disabled by default to optimize for speed.]),
+	[], [enable_small=no])
+if test "x$enable_small" = xyes; then
+	AC_DEFINE([HAVE_SMALL], [1], [Define to 1 if optimizing for size.])
+elif test "x$enable_small" != xno; then
+	AC_MSG_RESULT([])
+	AC_MSG_ERROR([--enable-small accepts only `yes' or `no'])
+fi
+AC_MSG_RESULT([$enable_small])
+AM_CONDITIONAL(COND_SMALL, test "x$enable_small" = xyes)
+
+
+#############
+# Threading #
+#############
+
+AC_MSG_CHECKING([if threading support is wanted])
+AC_ARG_ENABLE([threads], AS_HELP_STRING([--enable-threads=METHOD],
+		[Supported METHODS are `yes', `no', `posix', `win95', and
+		`vista'. The default is `yes'. Using `no' together with
+		--enable-small makes liblzma thread unsafe.]),
+	[], [enable_threads=yes])
+
+if test "x$enable_threads" = xyes; then
+	case $host_os in
+		mingw*)
+			case $host_cpu in
+				i?86)   enable_threads=win95 ;;
+				*)      enable_threads=vista ;;
+			esac
+			;;
+		*)
+			enable_threads=posix
+			;;
+	esac
+fi
+
+case $enable_threads in
+	posix | win95 | vista)
+		AC_MSG_RESULT([yes, $enable_threads])
+		;;
+	no)
+		AC_MSG_RESULT([no])
+		;;
+	*)
+		AC_MSG_RESULT([])
+		AC_MSG_ERROR([--enable-threads only accepts `yes', `no', `posix', `win95', or `vista'])
+		;;
+esac
+
+# The Win95 threading lacks thread-safe one-time initialization function.
+# It's better to disallow it instead of allowing threaded but thread-unsafe
+# build.
+if test "x$enable_small$enable_threads" = xyeswin95; then
+	AC_MSG_ERROR([--enable-threads=win95 and --enable-small cannot be
+		used at the same time])
+fi
+
+# We use the actual result a little later.
+
+
+#########################
+# Assumed amount of RAM #
+#########################
+
+# We use 128 MiB as default, because it will allow decompressing files
+# created with "xz -9". It would be slightly safer to guess a lower value,
+# but most systems, on which we don't have any way to determine the amount
+# of RAM, will probably have at least 128 MiB of RAM.
+AC_MSG_CHECKING([how much RAM to assume if the real amount is unknown])
+AC_ARG_ENABLE([assume-ram], AS_HELP_STRING([--enable-assume-ram=SIZE],
+		[If and only if the real amount of RAM cannot be determined,
+		assume SIZE MiB. The default is 128 MiB. This affects the
+		default memory usage limit.]),
+	[], [enable_assume_ram=128])
+assume_ram_check=`echo "$enable_assume_ram" | tr -d 0123456789`
+if test -z "$enable_assume_ram" || test -n "$assume_ram_check"; then
+	AC_MSG_RESULT([])
+	AC_MSG_ERROR([--enable-assume-ram accepts only an integer argument])
+fi
+AC_MSG_RESULT([$enable_assume_ram MiB])
+AC_DEFINE_UNQUOTED([ASSUME_RAM], [$enable_assume_ram],
+		[How many MiB of RAM to assume if the real amount cannot
+		be determined.])
+
+
+#########################
+# Components to install #
+#########################
+
+AC_ARG_ENABLE([xz], [AS_HELP_STRING([--disable-xz],
+		[do not build the xz tool])],
+	[], [enable_xz=yes])
+AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
+
+AC_ARG_ENABLE([xzdec], [AS_HELP_STRING([--disable-xzdec],
+		[do not build xzdec])],
+	[], [enable_xzdec=yes])
+test "x$enable_decoders" = xno && enable_xzdec=no
+AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
+
+AC_ARG_ENABLE([lzmadec], [AS_HELP_STRING([--disable-lzmadec],
+		[do not build lzmadec
+		(it exists primarily for LZMA Utils compatibility)])],
+	[], [enable_lzmadec=yes])
+test "x$enable_decoder_lzma1" = xno && enable_lzmadec=no
+AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
+
+AC_ARG_ENABLE([lzmainfo], [AS_HELP_STRING([--disable-lzmainfo],
+		[do not build lzmainfo
+		(it exists primarily for LZMA Utils compatibility)])],
+	[], [enable_lzmainfo=yes])
+test "x$enable_decoder_lzma1" = xno && enable_lzmainfo=no
+AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
+
+AC_ARG_ENABLE([lzma-links], [AS_HELP_STRING([--disable-lzma-links],
+		[do not create symlinks for LZMA Utils compatibility])],
+	[], [enable_lzma_links=yes])
+AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
+
+AC_ARG_ENABLE([scripts], [AS_HELP_STRING([--disable-scripts],
+		[do not install the scripts xzdiff, xzgrep, xzless, xzmore,
+		and their symlinks])],
+	[], [enable_scripts=yes])
+AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
+
+AC_ARG_ENABLE([doc], [AS_HELP_STRING([--disable-doc],
+		[do not install documentation files to docdir
+		(man pages will still be installed)])],
+	[], [enable_doc=yes])
+AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
+
+
+#####################
+# Symbol versioning #
+#####################
+
+AC_MSG_CHECKING([if library symbol versioning should be used])
+AC_ARG_ENABLE([symbol-versions], [AS_HELP_STRING([--enable-symbol-versions],
+		[Use symbol versioning for liblzma. Enabled by default on
+		GNU/Linux, other GNU-based systems, and FreeBSD.])],
+	[], [enable_symbol_versions=auto])
+if test "x$enable_symbol_versions" = xauto; then
+	case $host_os in
+		# NOTE: Even if one omits -gnu on GNU/Linux (e.g.
+		# i486-slackware-linux), configure will (via config.sub)
+		# append -gnu (e.g. i486-slackware-linux-gnu), and this
+		# test will work correctly.
+		gnu* | *-gnu* | freebsd*)
+			enable_symbol_versions=yes
+			;;
+		*)
+			enable_symbol_versions=no
+			;;
+	esac
+fi
+AC_MSG_RESULT([$enable_symbol_versions])
+AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
+
+
+##############
+# Sandboxing #
+##############
+
+AC_MSG_CHECKING([if sandboxing should be used])
+AC_ARG_ENABLE([sandbox], [AS_HELP_STRING([--enable-sandbox=METHOD],
+		[Sandboxing METHOD can be `auto', `no', or `capsicum'.
+		The default is `auto' which enables sandboxing if
+		a supported sandboxing method is found.])],
+	[], [enable_sandbox=auto])
+case $enable_sandbox in
+	auto)
+		AC_MSG_RESULT([maybe (autodetect)])
+		;;
+	no | capsicum)
+		AC_MSG_RESULT([$enable_sandbox])
+		;;
+	*)
+		AC_MSG_RESULT([])
+		AC_MSG_ERROR([--enable-sandbox only accepts `auto', `no', or `capsicum'.])
+		;;
+esac
+
+
+###########################
+# PATH prefix for scripts #
+###########################
+
+# The scripts can add a prefix to the search PATH so that POSIX tools
+# or the xz binary is always in the PATH.
+AC_ARG_ENABLE([path-for-scripts],
+	[AS_HELP_STRING([--enable-path-for-scripts=PREFIX],
+		[If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in
+		the beginning of the scripts (xzgrep and others).
+		The default is empty except on Solaris the default is
+		/usr/xpg4/bin.])],
+	[], [
+		case $host_os in
+			solaris*) enable_path_for_scripts=/usr/xpg4/bin ;;
+			*)        enable_path_for_scripts= ;;
+		esac
+	])
+if test -n "$enable_path_for_scripts" && test "x$enable_path_for_scripts" != xno ; then
+	enable_path_for_scripts="PATH=$enable_path_for_scripts:\$PATH"
+else
+	enable_path_for_scripts=
+fi
+AC_SUBST([enable_path_for_scripts])
+
+
+###############################################################################
+# Checks for programs.
+###############################################################################
+
+echo
+case $host_os in
+	solaris*)
+		# The gnulib POSIX shell macro below may pick a shell that
+		# doesn't work with xzgrep. Workaround by picking a shell
+		# that is known to work.
+		if test -z "$gl_cv_posix_shell" && test -x /usr/xpg4/bin/sh; then
+			gl_cv_posix_shell=/usr/xpg4/bin/sh
+		fi
+		;;
+esac
+gl_POSIX_SHELL
+if test -z "$POSIX_SHELL" && test "x$enable_scripts" = xyes ; then
+	AC_MSG_ERROR([No POSIX conforming shell (sh) was found.])
+fi
+
+echo
+echo "Initializing Automake:"
+
+# We don't use "subdir-objects" yet because it breaks "make distclean" when
+# dependencies are enabled (as of Automake 1.14.1) due to this bug:
+# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354
+# The -Wno-unsupported is used to silence warnings about missing
+# "subdir-objects".
+AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported])
+AC_PROG_LN_S
+
+AC_PROG_CC_C99
+if test x$ac_cv_prog_cc_c99 = xno ; then
+	AC_MSG_ERROR([No C99 compiler was found.])
+fi
+
+AM_PROG_CC_C_O
+AM_PROG_AS
+AC_USE_SYSTEM_EXTENSIONS
+
+case $enable_threads in
+	posix)
+		echo
+		echo "POSIX threading support:"
+		AX_PTHREAD([:]) dnl We don't need the HAVE_PTHREAD macro.
+		LIBS="$LIBS $PTHREAD_LIBS"
+		AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS"
+
+		dnl NOTE: PTHREAD_CC is ignored. It would be useful on AIX,
+		dnl but it's tricky to get it right together with
+		dnl AC_PROG_CC_C99. Thus, this is handled by telling the
+		dnl user in INSTALL to set the correct CC manually.
+
+		AC_DEFINE([MYTHREAD_POSIX], [1],
+			[Define to 1 when using POSIX threads (pthreads).])
+
+		# These are nice to have but not mandatory.
+		#
+		# FIXME: xz uses clock_gettime if it is available and can do
+		# it even when threading is disabled. Moving this outside
+		# of pthread detection may be undesirable because then
+		# liblzma may get linked against librt even when librt isn't
+		# needed by liblzma.
+		OLD_CFLAGS=$CFLAGS
+		CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+		AC_SEARCH_LIBS([clock_gettime], [rt])
+		AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock])
+		AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
+		CFLAGS=$OLD_CFLAGS
+		;;
+	win95)
+		AC_DEFINE([MYTHREAD_WIN95], [1], [Define to 1 when using
+			Windows 95 (and thus XP) compatible threads.
+			This avoids use of features that were added in
+			Windows Vista.])
+		;;
+	vista)
+		AC_DEFINE([MYTHREAD_VISTA], [1], [Define to 1 when using
+			Windows Vista compatible threads. This uses
+			features that are not available on Windows XP.])
+		;;
+esac
+AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno])
+
+echo
+echo "Initializing Libtool:"
+LT_PREREQ([2.4])
+LT_INIT([win32-dll])
+LT_LANG([Windows Resource])
+
+# This is a bit wrong since it is possible to request that only some libs
+# are built as shared. Using that feature isn't so common though, and this
+# breaks only on Windows (at least for now) if the user enables only some
+# libs as shared.
+AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
+
+
+###############################################################################
+# Checks for libraries.
+###############################################################################
+
+dnl Support for _REQUIRE_VERSION was added in gettext 0.19.6. If both
+dnl _REQUIRE_VERSION and _VERSION are present, the _VERSION is ignored.
+dnl We use both for compatibility with other programs in the Autotools family.
+echo
+echo "Initializing gettext:"
+AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
+AM_GNU_GETTEXT_VERSION([0.19.6])
+AM_GNU_GETTEXT([external])
+
+
+###############################################################################
+# Checks for header files.
+###############################################################################
+
+echo
+echo "System headers and functions:"
+
+# There is currently no workarounds in this package if some of
+# these headers are missing.
+AC_CHECK_HEADERS([fcntl.h limits.h sys/time.h],
+	[],
+	[AC_MSG_ERROR([Required header file(s) are missing.])])
+
+# This allows the use of the intrinsic functions if they are available.
+AC_CHECK_HEADERS([immintrin.h])
+
+
+###############################################################################
+# Checks for typedefs, structures, and compiler characteristics.
+###############################################################################
+
+dnl We don't need these as long as we need a C99 compiler anyway.
+dnl AC_C_INLINE
+dnl AC_C_RESTRICT
+
+AC_HEADER_STDBOOL
+
+AC_TYPE_UINT8_T
+AC_TYPE_UINT16_T
+AC_TYPE_INT32_T
+AC_TYPE_UINT32_T
+AC_TYPE_INT64_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINTPTR_T
+
+AC_CHECK_SIZEOF([size_t])
+
+# The command line tool can copy high resolution timestamps if such
+# information is available in struct stat. Otherwise one second accuracy
+# is used.
+AC_CHECK_MEMBERS([
+	struct stat.st_atim.tv_nsec,
+	struct stat.st_atimespec.tv_nsec,
+	struct stat.st_atimensec,
+	struct stat.st_uatime,
+	struct stat.st_atim.st__tim.tv_nsec])
+
+AC_SYS_LARGEFILE
+AC_C_BIGENDIAN
+
+
+###############################################################################
+# Checks for library functions.
+###############################################################################
+
+# Gnulib replacements as needed
+gl_GETOPT
+
+# Find the best function to set timestamps.
+AC_CHECK_FUNCS([futimens futimes futimesat utimes _futime utime], [break])
+
+# This is nice to have but not mandatory.
+AC_CHECK_FUNCS([posix_fadvise])
+
+TUKLIB_PROGNAME
+TUKLIB_INTEGER
+TUKLIB_PHYSMEM
+TUKLIB_CPUCORES
+TUKLIB_MBSTR
+
+# If requested, check for system-provided SHA-256. At least the following
+# implementations are supported:
+#
+# OS       Headers                     Library  Type           Function
+# FreeBSD  sys/types.h + sha256.h      libmd    SHA256_CTX     SHA256_Init
+# NetBSD   sys/types.h + sha2.h                 SHA256_CTX     SHA256_Init
+# OpenBSD  sys/types.h + sha2.h                 SHA2_CTX       SHA256Init
+# Solaris  sys/types.h + sha2.h        libmd    SHA256_CTX     SHA256Init
+# MINIX 3  sys/types.h + sha2.h                 SHA256_CTX     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
+# of size_t.
+#
+sha256_header_found=no
+sha256_type_found=no
+sha256_func_found=no
+if test "x$enable_external_sha256" = "xyes"; then
+	# Test for Common Crypto before others, because Darwin has sha256.h
+	# too and we don't want to use that, because on older versions it
+	# uses OpenSSL functions, whose SHA256_Init is not guaranteed to
+	# succeed.
+	AC_CHECK_HEADERS(
+		[CommonCrypto/CommonDigest.h sha256.h sha2.h],
+		[sha256_header_found=yes ; break])
+	if test "x$sha256_header_found" = xyes; then
+		AC_CHECK_TYPES([CC_SHA256_CTX, SHA256_CTX, SHA2_CTX],
+			[sha256_type_found=yes], [],
+			[[#ifdef HAVE_SYS_TYPES_H
+			  # include <sys/types.h>
+			  #endif
+			  #ifdef HAVE_COMMONCRYPTO_COMMONDIGEST_H
+			  # include <CommonCrypto/CommonDigest.h>
+			  #endif
+			  #ifdef HAVE_SHA256_H
+			  # include <sha256.h>
+			  #endif
+			  #ifdef HAVE_SHA2_H
+			  # include <sha2.h>
+			  #endif]])
+		if test "x$sha256_type_found" = xyes ; then
+			AC_SEARCH_LIBS([SHA256Init], [md])
+			AC_SEARCH_LIBS([SHA256_Init], [md])
+			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
+
+# Check for SSE2 intrinsics.
+AC_CHECK_DECL([_mm_movemask_epi8],
+	[AC_DEFINE([HAVE__MM_MOVEMASK_EPI8], [1],
+		[Define to 1 if _mm_movemask_epi8 is available.])],
+	[],
+[#ifdef HAVE_IMMINTRIN_H
+#include <immintrin.h>
+#endif])
+
+# Check for sandbox support. If one is found, set enable_sandbox=found.
+case $enable_sandbox in
+	auto | capsicum)
+		AX_CHECK_CAPSICUM([enable_sandbox=found], [:])
+		;;
+esac
+
+# 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 test "$GCC" = yes ; then
+	echo
+	echo "GCC extensions:"
+fi
+
+# Always do the visibility check but don't set AM_CFLAGS on Windows.
+# This way things get set properly even on Windows.
+gl_VISIBILITY
+if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then
+	AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY"
+fi
+
+if test "$GCC" = yes ; then
+	# Enable as much warnings as possible. These commented warnings won't
+	# work for this package though:
+	#   * -Wunreachable-code breaks several assert(0) cases, which are
+	#     backed up with "return LZMA_PROG_ERROR".
+	#   * -Wcast-qual would break various things where we need a non-const
+	#     pointer although we don't modify anything through it.
+	#   * -Wcast-align breaks optimized CRC32 and CRC64 implementation
+	#     on some architectures (not on x86), where this warning is bogus,
+	#     because we take care of correct alignment.
+	#   * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations
+	#     don't seem so useful here; at least the last one gives some
+	#     warnings which are not bugs.
+	for NEW_FLAG in \
+			-Wall \
+			-Wextra \
+			-Wvla \
+			-Wformat=2 \
+			-Winit-self \
+			-Wmissing-include-dirs \
+			-Wstrict-aliasing \
+			-Wfloat-equal \
+			-Wundef \
+			-Wshadow \
+			-Wpointer-arith \
+			-Wbad-function-cast \
+			-Wwrite-strings \
+			-Wlogical-op \
+			-Waggregate-return \
+			-Wstrict-prototypes \
+			-Wold-style-definition \
+			-Wmissing-prototypes \
+			-Wmissing-declarations \
+			-Wmissing-noreturn \
+			-Wredundant-decls
+	do
+		AC_MSG_CHECKING([if $CC accepts $NEW_FLAG])
+		OLD_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $NEW_FLAG -Werror"
+		AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+				[void foo(void); void foo(void) { }])], [
+			AM_CFLAGS="$AM_CFLAGS $NEW_FLAG"
+			AC_MSG_RESULT([yes])
+		], [
+			AC_MSG_RESULT([no])
+		])
+		CFLAGS="$OLD_CFLAGS"
+	done
+
+	AC_ARG_ENABLE([werror],
+		AS_HELP_STRING([--enable-werror], [Enable -Werror to abort
+			compilation on all compiler warnings.]),
+		[], [enable_werror=no])
+	if test "x$enable_werror" = "xyes"; then
+		AM_CFLAGS="$AM_CFLAGS -Werror"
+	fi
+fi
+
+
+###############################################################################
+# Create the makefiles and config.h
+###############################################################################
+
+echo
+
+# Don't build the lib directory at all if we don't need any replacement
+# functions.
+AM_CONDITIONAL([COND_GNULIB], test -n "$LIBOBJS")
+
+# Add default AM_CFLAGS.
+AC_SUBST([AM_CFLAGS])
+
+# This is needed for src/scripts.
+xz=`echo xz | sed "$program_transform_name"`
+AC_SUBST([xz])
+
+AC_CONFIG_FILES([
+	Doxyfile
+	Makefile
+	po/Makefile.in
+	lib/Makefile
+	src/Makefile
+	src/liblzma/Makefile
+	src/liblzma/api/Makefile
+	src/xz/Makefile
+	src/xzdec/Makefile
+	src/lzmainfo/Makefile
+	src/scripts/Makefile
+	tests/Makefile
+	debug/Makefile
+])
+AC_CONFIG_FILES([src/scripts/xzdiff], [chmod +x src/scripts/xzdiff])
+AC_CONFIG_FILES([src/scripts/xzgrep], [chmod +x src/scripts/xzgrep])
+AC_CONFIG_FILES([src/scripts/xzmore], [chmod +x src/scripts/xzmore])
+AC_CONFIG_FILES([src/scripts/xzless], [chmod +x src/scripts/xzless])
+
+AC_OUTPUT
+
+# Some warnings
+if test x$tuklib_cv_physmem_method = xunknown; then
+	echo
+	echo "WARNING:"
+	echo "No supported method to detect the amount of RAM."
+	echo "Consider using --enable-assume-ram (if you didn't already)"
+	echo "or make a patch to add support for this operating system."
+fi
+
+if test x$tuklib_cv_cpucores_method = xunknown; then
+	echo
+	echo "WARNING:"
+	echo "No supported method to detect the number of CPU cores."
+fi
+
+if test "x$enable_threads$enable_small" = xnoyes; then
+	echo
+	echo "NOTE:"
+	echo "liblzma will be thread unsafe due the combination"
+	echo "of --disable-threads --enable-small."
+fi

+ 30 - 0
xz.mod/xz/debug/Makefile.am

@@ -0,0 +1,30 @@
+##
+## Author: Lasse Collin
+##
+## This file has been put into the public domain.
+## You can do whatever you want with this file.
+##
+
+EXTRA_DIST = \
+	translation.bash
+
+noinst_PROGRAMS = \
+	repeat \
+	sync_flush \
+	full_flush \
+	memusage \
+	crc32 \
+	known_sizes \
+	hex2bin
+
+AM_CPPFLAGS = \
+	-I$(top_srcdir)/src/common \
+	-I$(top_srcdir)/src/liblzma/api
+
+LDADD = $(top_builddir)/src/liblzma/liblzma.la
+
+if COND_GNULIB
+LDADD += $(top_builddir)/lib/libgnu.a
+endif
+
+LDADD += $(LTLIBINTL)

+ 17 - 0
xz.mod/xz/debug/README

@@ -0,0 +1,17 @@
+
+Debug tools
+-----------
+
+    This directory contains a few tiny programs that may be helpful when
+    debugging XZ Utils.
+
+    These tools are not meant to be installed. Often one needs to edit
+    the source code a little to make the programs do the wanted things.
+    If you don't know how these programs could help you, it is likely
+    that they really are useless to you.
+
+    These aren't intended to be used as example programs. They take some
+    shortcuts here and there, which correct programs should not do. Many
+    possible errors (especially I/O errors) are ignored. Don't report
+    bugs or send patches to fix this kind of bugs.
+

+ 39 - 0
xz.mod/xz/debug/crc32.c

@@ -0,0 +1,39 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       crc32.c
+/// \brief      Primitive CRC32 calculation tool
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include "lzma.h"
+#include <stdio.h>
+
+
+int
+main(void)
+{
+	uint32_t crc = 0;
+
+	do {
+		uint8_t buf[BUFSIZ];
+		const size_t size = fread(buf, 1, sizeof(buf), stdin);
+		crc = lzma_crc32(buf, size, crc);
+	} while (!ferror(stdin) && !feof(stdin));
+
+	//printf("%08" PRIX32 "\n", crc);
+
+	// I want it little endian so it's easy to work with hex editor.
+	printf("%02" PRIX32 " ", crc & 0xFF);
+	printf("%02" PRIX32 " ", (crc >> 8) & 0xFF);
+	printf("%02" PRIX32 " ", (crc >> 16) & 0xFF);
+	printf("%02" PRIX32 " ", crc >> 24);
+	printf("\n");
+
+	return 0;
+}

+ 103 - 0
xz.mod/xz/debug/full_flush.c

@@ -0,0 +1,103 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       full_flush.c
+/// \brief      Encode files using LZMA_FULL_FLUSH
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include "lzma.h"
+#include <stdio.h>
+
+#define CHUNK 64
+
+
+static lzma_stream strm = LZMA_STREAM_INIT;
+static FILE *file_in;
+
+
+static void
+encode(size_t size, lzma_action action)
+{
+	uint8_t in[CHUNK];
+	uint8_t out[CHUNK];
+	lzma_ret ret;
+
+	do {
+		if (strm.avail_in == 0 && size > 0) {
+			const size_t amount = my_min(size, CHUNK);
+			strm.avail_in = fread(in, 1, amount, file_in);
+			strm.next_in = in;
+			size -= amount; // Intentionally not using avail_in.
+		}
+
+		strm.next_out = out;
+		strm.avail_out = CHUNK;
+
+		ret = lzma_code(&strm, size == 0 ? action : LZMA_RUN);
+
+		if (ret != LZMA_OK && ret != LZMA_STREAM_END) {
+			fprintf(stderr, "%s:%u: %s: ret == %d\n",
+					__FILE__, __LINE__, __func__, ret);
+			exit(1);
+		}
+
+		fwrite(out, 1, CHUNK - strm.avail_out, stdout);
+
+	} while (size > 0 || strm.avail_out == 0);
+
+	if ((action == LZMA_RUN && ret != LZMA_OK)
+			|| (action != LZMA_RUN && ret != LZMA_STREAM_END)) {
+		fprintf(stderr, "%s:%u: %s: ret == %d\n",
+				__FILE__, __LINE__, __func__, ret);
+		exit(1);
+	}
+}
+
+
+int
+main(int argc, char **argv)
+{
+	file_in = argc > 1 ? fopen(argv[1], "rb") : stdin;
+
+
+	// Config
+	lzma_options_lzma opt_lzma;
+	if (lzma_lzma_preset(&opt_lzma, 1)) {
+		fprintf(stderr, "preset failed\n");
+		exit(1);
+	}
+	lzma_filter filters[LZMA_FILTERS_MAX + 1];
+	filters[0].id = LZMA_FILTER_LZMA2;
+	filters[0].options = &opt_lzma;
+	filters[1].id = LZMA_VLI_UNKNOWN;
+
+	// Init
+	if (lzma_stream_encoder(&strm, filters, LZMA_CHECK_CRC32) != LZMA_OK) {
+		fprintf(stderr, "init failed\n");
+		exit(1);
+	}
+
+// 	if (lzma_easy_encoder(&strm, 1)) {
+// 		fprintf(stderr, "init failed\n");
+// 		exit(1);
+// 	}
+
+	// Encoding
+	encode(0, LZMA_FULL_FLUSH);
+	encode(6, LZMA_FULL_FLUSH);
+	encode(0, LZMA_FULL_FLUSH);
+	encode(7, LZMA_FULL_FLUSH);
+	encode(0, LZMA_FULL_FLUSH);
+	encode(0, LZMA_FINISH);
+
+	// Clean up
+	lzma_end(&strm);
+
+	return 0;
+}

+ 53 - 0
xz.mod/xz/debug/hex2bin.c

@@ -0,0 +1,53 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       hex2bin.c
+/// \brief      Converts hexadecimal input strings to binary
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include <stdio.h>
+#include <ctype.h>
+
+
+static int
+getbin(int x)
+{
+	if (x >= '0' && x <= '9')
+		return x - '0';
+
+	if (x >= 'A' && x <= 'F')
+		return x - 'A' + 10;
+
+	return x - 'a' + 10;
+}
+
+
+int
+main(void)
+{
+	while (true) {
+		int byte = getchar();
+		if (byte == EOF)
+			return 0;
+		if (!isxdigit(byte))
+			continue;
+
+		const int digit = getchar();
+		if (digit == EOF || !isxdigit(digit)) {
+			fprintf(stderr, "Invalid input\n");
+			return 1;
+		}
+
+		byte = (getbin(byte) << 4) | getbin(digit);
+		if (putchar(byte) == EOF) {
+			perror(NULL);
+			return 1;
+		}
+	}
+}

+ 129 - 0
xz.mod/xz/debug/known_sizes.c

@@ -0,0 +1,129 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       known_sizes.c
+/// \brief      Encodes .lzma Stream with sizes known in Block Header
+///
+/// The input file is encoded in RAM, and the known Compressed Size
+/// and/or Uncompressed Size values are stored in the Block Header.
+/// As of writing there's no such Stream encoder in liblzma.
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include "lzma.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/unistd.h>
+#include <stdio.h>
+
+
+// Support file sizes up to 1 MiB. We use this for output space too, so files
+// close to 1 MiB had better compress at least a little or we have a buffer
+// overflow.
+#define BUFFER_SIZE (1U << 20)
+
+
+int
+main(void)
+{
+	// Allocate the buffers.
+	uint8_t *in = malloc(BUFFER_SIZE);
+	uint8_t *out = malloc(BUFFER_SIZE);
+	if (in == NULL || out == NULL)
+		return 1;
+
+	// Fill the input buffer.
+	const size_t in_size = fread(in, 1, BUFFER_SIZE, stdin);
+
+	// Filter setup
+	lzma_options_lzma opt_lzma;
+	if (lzma_lzma_preset(&opt_lzma, 1))
+		return 1;
+
+	lzma_filter filters[] = {
+		{
+			.id = LZMA_FILTER_LZMA2,
+			.options = &opt_lzma
+		},
+		{
+			.id = LZMA_VLI_UNKNOWN
+		}
+	};
+
+	lzma_block block = {
+		.check = LZMA_CHECK_CRC32,
+		.compressed_size = BUFFER_SIZE, // Worst case reserve
+		.uncompressed_size = in_size,
+		.filters = filters,
+	};
+
+	lzma_stream strm = LZMA_STREAM_INIT;
+	if (lzma_block_encoder(&strm, &block) != LZMA_OK)
+		return 1;
+
+	// Reserve space for Stream Header and Block Header. We need to
+	// calculate the size of the Block Header first.
+	if (lzma_block_header_size(&block) != LZMA_OK)
+		return 1;
+
+	size_t out_size = LZMA_STREAM_HEADER_SIZE + block.header_size;
+
+	strm.next_in = in;
+	strm.avail_in = in_size;
+	strm.next_out = out + out_size;
+	strm.avail_out = BUFFER_SIZE - out_size;
+
+	if (lzma_code(&strm, LZMA_FINISH) != LZMA_STREAM_END)
+		return 1;
+
+	out_size += strm.total_out;
+
+	if (lzma_block_header_encode(&block, out + LZMA_STREAM_HEADER_SIZE)
+			!= LZMA_OK)
+		return 1;
+
+	lzma_index *idx = lzma_index_init(NULL);
+	if (idx == NULL)
+		return 1;
+
+	if (lzma_index_append(idx, NULL, block.header_size + strm.total_out,
+			strm.total_in) != LZMA_OK)
+		return 1;
+
+	if (lzma_index_encoder(&strm, idx) != LZMA_OK)
+		return 1;
+
+	if (lzma_code(&strm, LZMA_RUN) != LZMA_STREAM_END)
+		return 1;
+
+	out_size += strm.total_out;
+
+	lzma_end(&strm);
+
+	lzma_index_end(idx, NULL);
+
+	// Encode the Stream Header and Stream Footer. backwards_size is
+	// needed only for the Stream Footer.
+	lzma_stream_flags sf = {
+		.backward_size = strm.total_out,
+		.check = block.check,
+	};
+
+	if (lzma_stream_header_encode(&sf, out) != LZMA_OK)
+		return 1;
+
+	if (lzma_stream_footer_encode(&sf, out + out_size) != LZMA_OK)
+		return 1;
+
+	out_size += LZMA_STREAM_HEADER_SIZE;
+
+	// Write out the file.
+	fwrite(out, 1, out_size, stdout);
+
+	return 0;
+}

+ 51 - 0
xz.mod/xz/debug/memusage.c

@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       memusage.c
+/// \brief      Calculates memory usage using lzma_memory_usage()
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include "lzma.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+	lzma_options_lzma lzma = {
+		.dict_size = (1U << 30) + (1U << 29),
+		.lc = 3,
+		.lp = 0,
+		.pb = 2,
+		.preset_dict = NULL,
+		.preset_dict_size = 0,
+		.mode = LZMA_MODE_NORMAL,
+		.nice_len = 48,
+		.mf = LZMA_MF_BT4,
+		.depth = 0,
+	};
+
+/*
+	lzma_options_filter filters[] = {
+		{ LZMA_FILTER_LZMA1,
+			(lzma_options_lzma *)&lzma_preset_lzma[6 - 1] },
+		{ UINT64_MAX, NULL }
+	};
+*/
+	lzma_filter filters[] = {
+		{ LZMA_FILTER_LZMA1, &lzma },
+		{ UINT64_MAX, NULL }
+	};
+
+	printf("Encoder: %10" PRIu64 " B\n",
+			lzma_raw_encoder_memusage(filters));
+	printf("Decoder: %10" PRIu64 " B\n",
+			lzma_raw_decoder_memusage(filters));
+
+	return 0;
+}

+ 36 - 0
xz.mod/xz/debug/repeat.c

@@ -0,0 +1,36 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       repeat.c
+/// \brief      Repeats given string given times
+///
+/// This program can be useful when debugging run-length encoder in
+/// the Subblock filter, especially the condition when repeat count
+/// doesn't fit into 28-bit integer.
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include <stdio.h>
+
+
+int
+main(int argc, char **argv)
+{
+	if (argc != 3) {
+		fprintf(stderr, "Usage: %s COUNT STRING\n", argv[0]);
+		exit(1);
+	}
+
+	unsigned long long count = strtoull(argv[1], NULL, 10);
+	const size_t size = strlen(argv[2]);
+
+	while (count-- != 0)
+		fwrite(argv[2], 1, size, stdout);
+
+	return !!(ferror(stdout) || fclose(stdout));
+}

+ 125 - 0
xz.mod/xz/debug/sync_flush.c

@@ -0,0 +1,125 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       sync_flush.c
+/// \brief      Encode files using LZMA_SYNC_FLUSH
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include "lzma.h"
+#include <stdio.h>
+
+#define CHUNK 64
+
+
+static lzma_stream strm = LZMA_STREAM_INIT;
+static FILE *file_in;
+
+
+static void
+encode(size_t size, lzma_action action)
+{
+	uint8_t in[CHUNK];
+	uint8_t out[CHUNK];
+	lzma_ret ret;
+
+	do {
+		if (strm.avail_in == 0 && size > 0) {
+			const size_t amount = my_min(size, CHUNK);
+			strm.avail_in = fread(in, 1, amount, file_in);
+			strm.next_in = in;
+			size -= amount; // Intentionally not using avail_in.
+		}
+
+		strm.next_out = out;
+		strm.avail_out = CHUNK;
+
+		ret = lzma_code(&strm, size == 0 ? action : LZMA_RUN);
+
+		if (ret != LZMA_OK && ret != LZMA_STREAM_END) {
+			fprintf(stderr, "%s:%u: %s: ret == %d\n",
+					__FILE__, __LINE__, __func__, ret);
+			exit(1);
+		}
+
+		fwrite(out, 1, CHUNK - strm.avail_out, stdout);
+
+	} while (size > 0 || strm.avail_out == 0);
+
+	if ((action == LZMA_RUN && ret != LZMA_OK)
+			|| (action != LZMA_RUN && ret != LZMA_STREAM_END)) {
+		fprintf(stderr, "%s:%u: %s: ret == %d\n",
+				__FILE__, __LINE__, __func__, ret);
+		exit(1);
+	}
+}
+
+
+int
+main(int argc, char **argv)
+{
+	file_in = argc > 1 ? fopen(argv[1], "rb") : stdin;
+
+	// Config
+	lzma_options_lzma opt_lzma = {
+		.dict_size = 1U << 16,
+		.lc = LZMA_LC_DEFAULT,
+		.lp = LZMA_LP_DEFAULT,
+		.pb = LZMA_PB_DEFAULT,
+		.preset_dict = NULL,
+		.mode = LZMA_MODE_NORMAL,
+		.nice_len = 32,
+		.mf = LZMA_MF_HC3,
+		.depth = 0,
+	};
+
+	lzma_options_delta opt_delta = {
+		.dist = 16
+	};
+
+	lzma_filter filters[LZMA_FILTERS_MAX + 1];
+	filters[0].id = LZMA_FILTER_LZMA2;
+	filters[0].options = &opt_lzma;
+	filters[1].id = LZMA_VLI_UNKNOWN;
+
+	// Init
+	if (lzma_stream_encoder(&strm, filters, LZMA_CHECK_CRC32) != LZMA_OK) {
+		fprintf(stderr, "init failed\n");
+		exit(1);
+	}
+
+	// Encoding
+	encode(0, LZMA_SYNC_FLUSH);
+	encode(6, LZMA_SYNC_FLUSH);
+	encode(0, LZMA_SYNC_FLUSH);
+	encode(7, LZMA_SYNC_FLUSH);
+	encode(0, LZMA_SYNC_FLUSH);
+	encode(0, LZMA_FINISH);
+
+/*
+	encode(53, LZMA_SYNC_FLUSH);
+	opt_lzma.lc = 2;
+	opt_lzma.lp = 1;
+	opt_lzma.pb = 0;
+	if (lzma_filters_update(&strm, filters) != LZMA_OK) {
+		fprintf(stderr, "update failed\n");
+		exit(1);
+	}
+	encode(404, LZMA_FINISH);
+*/
+
+	// Clean up
+	lzma_end(&strm);
+
+	return 0;
+
+	// Prevent useless warnings so we don't need to have special CFLAGS
+	// to disable -Werror.
+	(void)opt_lzma;
+	(void)opt_delta;
+}

+ 100 - 0
xz.mod/xz/debug/translation.bash

@@ -0,0 +1,100 @@
+#!/bin/bash
+
+###############################################################################
+#
+# Script to check output of some translated messages
+#
+# This should be useful for translators to check that the translated strings
+# look good. This doesn't make xz print all possible strings, but it should
+# cover most of the cases where mistakes can easily happen.
+#
+# Give the path and filename of the xz executable as an argument. If no
+# arguments are given, this script uses ../src/xz/xz (relative to the
+# location of this script).
+#
+# You may want to pipe the output of this script to less -S to view the
+# tables printed by xz --list on a 80-column terminal. On the other hand,
+# viewing the other messages may be better without -S.
+#
+###############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+###############################################################################
+
+set -e
+
+# If an argument was given, use it to set the location of the xz executable.
+unset XZ
+if [ -n "$1" ]; then
+	XZ=$1
+	[ "x${XZ:0:1}" != "x/" ] && XZ="$PWD/$XZ"
+fi
+
+# Locate top_srcdir and go there.
+top_srcdir="$(cd -- "$(dirname -- "$0")" && cd .. && pwd)"
+cd -- "$top_srcdir"
+
+# If XZ wasn't already set, use the default location.
+XZ=${XZ-"$PWD/src/xz/xz"}
+if [ "$(type -t "$XZ" || true)" != "file" ]; then
+	echo "Give the location of the xz executable as an argument" \
+			"to this script."
+	exit 1
+fi
+XZ=$(type -p -- "$XZ")
+
+# Print the xz version and locale information.
+echo "$XZ --version"
+"$XZ" --version
+echo
+if [ -d .git ] && type git > /dev/null 2>&1; then
+	echo "Source code version in $PWD:"
+	git describe --abbrev=4
+fi
+echo
+locale
+echo
+
+# Make the test files directory the current directory.
+cd tests/files
+
+# Put xz in PATH so that argv[0] stays short.
+PATH=${XZ%/*}:$PATH
+
+# Some of the test commands are error messages and thus don't
+# return successfully.
+set +e
+
+for CMD in \
+	"xz --foobarbaz" \
+	"xz --memlimit=123abcd" \
+	"xz --memlimit=40MiB -6 /dev/null" \
+	"xz --memlimit=0 --info-memory" \
+	"xz --memlimit-compress=1234MiB --memlimit-decompress=50MiB --info-memory" \
+	"xz --verbose --verbose /dev/null | cat" \
+	"xz --lzma2=foobarbaz" \
+	"xz --lzma2=foobarbaz=abcd" \
+	"xz --lzma2=mf=abcd" \
+	"xz --lzma2=preset=foobarbaz" \
+	"xz --lzma2=mf=bt4,nice=2" \
+	"xz --lzma2=nice=50000" \
+	"xz --help" \
+	"xz --long-help" \
+	"xz --list good-*lzma2*" \
+	"xz --list good-1-check*" \
+	"xz --list --verbose good-*lzma2*" \
+	"xz --list --verbose good-1-check*" \
+	"xz --list --verbose --verbose good-*lzma2*" \
+	"xz --list --verbose --verbose good-1-check*" \
+	"xz --list --verbose --verbose unsupported-check.xz"
+do
+	echo "-----------------------------------------------------------"
+	echo
+	echo "\$ $CMD"
+	eval "$CMD"
+	echo
+done 2>&1

+ 31 - 0
xz.mod/xz/doc/examples/00_README.txt

@@ -0,0 +1,31 @@
+
+liblzma example programs
+========================
+
+Introduction
+
+    The examples are written so that the same comments aren't
+    repeated (much) in later files.
+
+    On POSIX systems, the examples should build by just typing "make".
+
+    The examples that use stdin or stdout don't set stdin and stdout
+    to binary mode. On systems where it matters (e.g. Windows) it is
+    possible that the examples won't work without modification.
+
+
+List of examples
+
+    01_compress_easy.c                  Multi-call compression using
+                                        a compression preset
+
+    02_decompress.c                     Multi-call decompression
+
+    03_compress_custom.c                Like 01_compress_easy.c but using
+                                        a custom filter chain
+                                        (x86 BCJ + LZMA2)
+
+    04_compress_easy_mt.c               Multi-threaded multi-call
+                                        compression using a compression
+                                        preset
+

+ 297 - 0
xz.mod/xz/doc/examples/01_compress_easy.c

@@ -0,0 +1,297 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       01_compress_easy.c
+/// \brief      Compress from stdin to stdout in multi-call mode
+///
+/// Usage:      ./01_compress_easy PRESET < INFILE > OUTFILE
+///
+/// Example:    ./01_compress_easy 6 < foo > foo.xz
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lzma.h>
+
+
+static void
+show_usage_and_exit(const char *argv0)
+{
+	fprintf(stderr, "Usage: %s PRESET < INFILE > OUTFILE\n"
+			"PRESET is a number 0-9 and can optionally be "
+			"followed by `e' to indicate extreme preset\n",
+			argv0);
+	exit(EXIT_FAILURE);
+}
+
+
+static uint32_t
+get_preset(int argc, char **argv)
+{
+	// One argument whose first char must be 0-9.
+	if (argc != 2 || argv[1][0] < '0' || argv[1][0] > '9')
+		show_usage_and_exit(argv[0]);
+
+	// Calculate the preste level 0-9.
+	uint32_t preset = argv[1][0] - '0';
+
+	// If there is a second char, it must be 'e'. It will set
+	// the LZMA_PRESET_EXTREME flag.
+	if (argv[1][1] != '\0') {
+		if (argv[1][1] != 'e' || argv[1][2] != '\0')
+			show_usage_and_exit(argv[0]);
+
+		preset |= LZMA_PRESET_EXTREME;
+	}
+
+	return preset;
+}
+
+
+static bool
+init_encoder(lzma_stream *strm, uint32_t preset)
+{
+	// Initialize the encoder using a preset. Set the integrity to check
+	// to CRC64, which is the default in the xz command line tool. If
+	// the .xz file needs to be decompressed with XZ Embedded, use
+	// LZMA_CHECK_CRC32 instead.
+	lzma_ret ret = lzma_easy_encoder(strm, preset, LZMA_CHECK_CRC64);
+
+	// Return successfully if the initialization went fine.
+	if (ret == LZMA_OK)
+		return true;
+
+	// Something went wrong. The possible errors are documented in
+	// lzma/container.h (src/liblzma/api/lzma/container.h in the source
+	// package or e.g. /usr/include/lzma/container.h depending on the
+	// install prefix).
+	const char *msg;
+	switch (ret) {
+	case LZMA_MEM_ERROR:
+		msg = "Memory allocation failed";
+		break;
+
+	case LZMA_OPTIONS_ERROR:
+		msg = "Specified preset is not supported";
+		break;
+
+	case LZMA_UNSUPPORTED_CHECK:
+		msg = "Specified integrity check is not supported";
+		break;
+
+	default:
+		// This is most likely LZMA_PROG_ERROR indicating a bug in
+		// this program or in liblzma. It is inconvenient to have a
+		// separate error message for errors that should be impossible
+		// to occur, but knowing the error code is important for
+		// debugging. That's why it is good to print the error code
+		// at least when there is no good error message to show.
+		msg = "Unknown error, possibly a bug";
+		break;
+	}
+
+	fprintf(stderr, "Error initializing the encoder: %s (error code %u)\n",
+			msg, ret);
+	return false;
+}
+
+
+static bool
+compress(lzma_stream *strm, FILE *infile, FILE *outfile)
+{
+	// This will be LZMA_RUN until the end of the input file is reached.
+	// This tells lzma_code() when there will be no more input.
+	lzma_action action = LZMA_RUN;
+
+	// Buffers to temporarily hold uncompressed input
+	// and compressed output.
+	uint8_t inbuf[BUFSIZ];
+	uint8_t outbuf[BUFSIZ];
+
+	// Initialize the input and output pointers. Initializing next_in
+	// and avail_in isn't really necessary when we are going to encode
+	// just one file since LZMA_STREAM_INIT takes care of initializing
+	// those already. But it doesn't hurt much and it will be needed
+	// if encoding more than one file like we will in 02_decompress.c.
+	//
+	// While we don't care about strm->total_in or strm->total_out in this
+	// example, it is worth noting that initializing the encoder will
+	// always reset total_in and total_out to zero. But the encoder
+	// initialization doesn't touch next_in, avail_in, next_out, or
+	// avail_out.
+	strm->next_in = NULL;
+	strm->avail_in = 0;
+	strm->next_out = outbuf;
+	strm->avail_out = sizeof(outbuf);
+
+	// Loop until the file has been successfully compressed or until
+	// an error occurs.
+	while (true) {
+		// Fill the input buffer if it is empty.
+		if (strm->avail_in == 0 && !feof(infile)) {
+			strm->next_in = inbuf;
+			strm->avail_in = fread(inbuf, 1, sizeof(inbuf),
+					infile);
+
+			if (ferror(infile)) {
+				fprintf(stderr, "Read error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			// Once the end of the input file has been reached,
+			// we need to tell lzma_code() that no more input
+			// will be coming and that it should finish the
+			// encoding.
+			if (feof(infile))
+				action = LZMA_FINISH;
+		}
+
+		// Tell liblzma do the actual encoding.
+		//
+		// This reads up to strm->avail_in bytes of input starting
+		// from strm->next_in. avail_in will be decremented and
+		// next_in incremented by an equal amount to match the
+		// number of input bytes consumed.
+		//
+		// Up to strm->avail_out bytes of compressed output will be
+		// written starting from strm->next_out. avail_out and next_out
+		// will be incremented by an equal amount to match the number
+		// of output bytes written.
+		//
+		// The encoder has to do internal buffering, which means that
+		// it may take quite a bit of input before the same data is
+		// available in compressed form in the output buffer.
+		lzma_ret ret = lzma_code(strm, action);
+
+		// If the output buffer is full or if the compression finished
+		// successfully, write the data from the output buffer to
+		// the output file.
+		if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
+			// When lzma_code() has returned LZMA_STREAM_END,
+			// the output buffer is likely to be only partially
+			// full. Calculate how much new data there is to
+			// be written to the output file.
+			size_t write_size = sizeof(outbuf) - strm->avail_out;
+
+			if (fwrite(outbuf, 1, write_size, outfile)
+					!= write_size) {
+				fprintf(stderr, "Write error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			// Reset next_out and avail_out.
+			strm->next_out = outbuf;
+			strm->avail_out = sizeof(outbuf);
+		}
+
+		// Normally the return value of lzma_code() will be LZMA_OK
+		// until everything has been encoded.
+		if (ret != LZMA_OK) {
+			// Once everything has been encoded successfully, the
+			// return value of lzma_code() will be LZMA_STREAM_END.
+			//
+			// It is important to check for LZMA_STREAM_END. Do not
+			// assume that getting ret != LZMA_OK would mean that
+			// everything has gone well.
+			if (ret == LZMA_STREAM_END)
+				return true;
+
+			// It's not LZMA_OK nor LZMA_STREAM_END,
+			// so it must be an error code. See lzma/base.h
+			// (src/liblzma/api/lzma/base.h in the source package
+			// or e.g. /usr/include/lzma/base.h depending on the
+			// install prefix) for the list and documentation of
+			// possible values. Most values listen in lzma_ret
+			// enumeration aren't possible in this example.
+			const char *msg;
+			switch (ret) {
+			case LZMA_MEM_ERROR:
+				msg = "Memory allocation failed";
+				break;
+
+			case LZMA_DATA_ERROR:
+				// This error is returned if the compressed
+				// or uncompressed size get near 8 EiB
+				// (2^63 bytes) because that's where the .xz
+				// file format size limits currently are.
+				// That is, the possibility of this error
+				// is mostly theoretical unless you are doing
+				// something very unusual.
+				//
+				// Note that strm->total_in and strm->total_out
+				// have nothing to do with this error. Changing
+				// those variables won't increase or decrease
+				// the chance of getting this error.
+				msg = "File size limits exceeded";
+				break;
+
+			default:
+				// This is most likely LZMA_PROG_ERROR, but
+				// if this program is buggy (or liblzma has
+				// a bug), it may be e.g. LZMA_BUF_ERROR or
+				// LZMA_OPTIONS_ERROR too.
+				//
+				// It is inconvenient to have a separate
+				// error message for errors that should be
+				// impossible to occur, but knowing the error
+				// code is important for debugging. That's why
+				// it is good to print the error code at least
+				// when there is no good error message to show.
+				msg = "Unknown error, possibly a bug";
+				break;
+			}
+
+			fprintf(stderr, "Encoder error: %s (error code %u)\n",
+					msg, ret);
+			return false;
+		}
+	}
+}
+
+
+extern int
+main(int argc, char **argv)
+{
+	// Get the preset number from the command line.
+	uint32_t preset = get_preset(argc, argv);
+
+	// Initialize a lzma_stream structure. When it is allocated on stack,
+	// it is simplest to use LZMA_STREAM_INIT macro like below. When it
+	// is allocated on heap, using memset(strmptr, 0, sizeof(*strmptr))
+	// works (as long as NULL pointers are represented with zero bits
+	// as they are on practically all computers today).
+	lzma_stream strm = LZMA_STREAM_INIT;
+
+	// Initialize the encoder. If it succeeds, compress from
+	// stdin to stdout.
+	bool success = init_encoder(&strm, preset);
+	if (success)
+		success = compress(&strm, stdin, stdout);
+
+	// Free the memory allocated for the encoder. If we were encoding
+	// multiple files, this would only need to be done after the last
+	// file. See 02_decompress.c for handling of multiple files.
+	//
+	// It is OK to call lzma_end() multiple times or when it hasn't been
+	// actually used except initialized with LZMA_STREAM_INIT.
+	lzma_end(&strm);
+
+	// Close stdout to catch possible write errors that can occur
+	// when pending data is flushed from the stdio buffers.
+	if (fclose(stdout)) {
+		fprintf(stderr, "Write error: %s\n", strerror(errno));
+		success = false;
+	}
+
+	return success ? EXIT_SUCCESS : EXIT_FAILURE;
+}

+ 287 - 0
xz.mod/xz/doc/examples/02_decompress.c

@@ -0,0 +1,287 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       02_decompress.c
+/// \brief      Decompress .xz files to stdout
+///
+/// Usage:      ./02_decompress INPUT_FILES... > OUTFILE
+///
+/// Example:    ./02_decompress foo.xz bar.xz > foobar
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lzma.h>
+
+
+static bool
+init_decoder(lzma_stream *strm)
+{
+	// Initialize a .xz decoder. The decoder supports a memory usage limit
+	// and a set of flags.
+	//
+	// The memory usage of the decompressor depends on the settings used
+	// to compress a .xz file. It can vary from less than a megabyte to
+	// a few gigabytes, but in practice (at least for now) it rarely
+	// exceeds 65 MiB because that's how much memory is required to
+	// decompress files created with "xz -9". Settings requiring more
+	// memory take extra effort to use and don't (at least for now)
+	// provide significantly better compression in most cases.
+	//
+	// Memory usage limit is useful if it is important that the
+	// decompressor won't consume gigabytes of memory. The need
+	// for limiting depends on the application. In this example,
+	// no memory usage limiting is used. This is done by setting
+	// the limit to UINT64_MAX.
+	//
+	// The .xz format allows concatenating compressed files as is:
+	//
+	//     echo foo | xz > foobar.xz
+	//     echo bar | xz >> foobar.xz
+	//
+	// When decompressing normal standalone .xz files, LZMA_CONCATENATED
+	// should always be used to support decompression of concatenated
+	// .xz files. If LZMA_CONCATENATED isn't used, the decoder will stop
+	// after the first .xz stream. This can be useful when .xz data has
+	// been embedded inside another file format.
+	//
+	// Flags other than LZMA_CONCATENATED are supported too, and can
+	// be combined with bitwise-or. See lzma/container.h
+	// (src/liblzma/api/lzma/container.h in the source package or e.g.
+	// /usr/include/lzma/container.h depending on the install prefix)
+	// for details.
+	lzma_ret ret = lzma_stream_decoder(
+			strm, UINT64_MAX, LZMA_CONCATENATED);
+
+	// Return successfully if the initialization went fine.
+	if (ret == LZMA_OK)
+		return true;
+
+	// Something went wrong. The possible errors are documented in
+	// lzma/container.h (src/liblzma/api/lzma/container.h in the source
+	// package or e.g. /usr/include/lzma/container.h depending on the
+	// install prefix).
+	//
+	// Note that LZMA_MEMLIMIT_ERROR is never possible here. If you
+	// specify a very tiny limit, the error will be delayed until
+	// the first headers have been parsed by a call to lzma_code().
+	const char *msg;
+	switch (ret) {
+	case LZMA_MEM_ERROR:
+		msg = "Memory allocation failed";
+		break;
+
+	case LZMA_OPTIONS_ERROR:
+		msg = "Unsupported decompressor flags";
+		break;
+
+	default:
+		// This is most likely LZMA_PROG_ERROR indicating a bug in
+		// this program or in liblzma. It is inconvenient to have a
+		// separate error message for errors that should be impossible
+		// to occur, but knowing the error code is important for
+		// debugging. That's why it is good to print the error code
+		// at least when there is no good error message to show.
+		msg = "Unknown error, possibly a bug";
+		break;
+	}
+
+	fprintf(stderr, "Error initializing the decoder: %s (error code %u)\n",
+			msg, ret);
+	return false;
+}
+
+
+static bool
+decompress(lzma_stream *strm, const char *inname, FILE *infile, FILE *outfile)
+{
+	// When LZMA_CONCATENATED flag was used when initializing the decoder,
+	// we need to tell lzma_code() when there will be no more input.
+	// This is done by setting action to LZMA_FINISH instead of LZMA_RUN
+	// in the same way as it is done when encoding.
+	//
+	// When LZMA_CONCATENATED isn't used, there is no need to use
+	// LZMA_FINISH to tell when all the input has been read, but it
+	// is still OK to use it if you want. When LZMA_CONCATENATED isn't
+	// used, the decoder will stop after the first .xz stream. In that
+	// case some unused data may be left in strm->next_in.
+	lzma_action action = LZMA_RUN;
+
+	uint8_t inbuf[BUFSIZ];
+	uint8_t outbuf[BUFSIZ];
+
+	strm->next_in = NULL;
+	strm->avail_in = 0;
+	strm->next_out = outbuf;
+	strm->avail_out = sizeof(outbuf);
+
+	while (true) {
+		if (strm->avail_in == 0 && !feof(infile)) {
+			strm->next_in = inbuf;
+			strm->avail_in = fread(inbuf, 1, sizeof(inbuf),
+					infile);
+
+			if (ferror(infile)) {
+				fprintf(stderr, "%s: Read error: %s\n",
+						inname, strerror(errno));
+				return false;
+			}
+
+			// Once the end of the input file has been reached,
+			// we need to tell lzma_code() that no more input
+			// will be coming. As said before, this isn't required
+			// if the LZMA_CONCATENATED flag isn't used when
+			// initializing the decoder.
+			if (feof(infile))
+				action = LZMA_FINISH;
+		}
+
+		lzma_ret ret = lzma_code(strm, action);
+
+		if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
+			size_t write_size = sizeof(outbuf) - strm->avail_out;
+
+			if (fwrite(outbuf, 1, write_size, outfile)
+					!= write_size) {
+				fprintf(stderr, "Write error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			strm->next_out = outbuf;
+			strm->avail_out = sizeof(outbuf);
+		}
+
+		if (ret != LZMA_OK) {
+			// Once everything has been decoded successfully, the
+			// return value of lzma_code() will be LZMA_STREAM_END.
+			//
+			// It is important to check for LZMA_STREAM_END. Do not
+			// assume that getting ret != LZMA_OK would mean that
+			// everything has gone well or that when you aren't
+			// getting more output it must have successfully
+			// decoded everything.
+			if (ret == LZMA_STREAM_END)
+				return true;
+
+			// It's not LZMA_OK nor LZMA_STREAM_END,
+			// so it must be an error code. See lzma/base.h
+			// (src/liblzma/api/lzma/base.h in the source package
+			// or e.g. /usr/include/lzma/base.h depending on the
+			// install prefix) for the list and documentation of
+			// possible values. Many values listen in lzma_ret
+			// enumeration aren't possible in this example, but
+			// can be made possible by enabling memory usage limit
+			// or adding flags to the decoder initialization.
+			const char *msg;
+			switch (ret) {
+			case LZMA_MEM_ERROR:
+				msg = "Memory allocation failed";
+				break;
+
+			case LZMA_FORMAT_ERROR:
+				// .xz magic bytes weren't found.
+				msg = "The input is not in the .xz format";
+				break;
+
+			case LZMA_OPTIONS_ERROR:
+				// For example, the headers specify a filter
+				// that isn't supported by this liblzma
+				// version (or it hasn't been enabled when
+				// building liblzma, but no-one sane does
+				// that unless building liblzma for an
+				// embedded system). Upgrading to a newer
+				// liblzma might help.
+				//
+				// Note that it is unlikely that the file has
+				// accidentally became corrupt if you get this
+				// error. The integrity of the .xz headers is
+				// always verified with a CRC32, so
+				// unintentionally corrupt files can be
+				// distinguished from unsupported files.
+				msg = "Unsupported compression options";
+				break;
+
+			case LZMA_DATA_ERROR:
+				msg = "Compressed file is corrupt";
+				break;
+
+			case LZMA_BUF_ERROR:
+				// Typically this error means that a valid
+				// file has got truncated, but it might also
+				// be a damaged part in the file that makes
+				// the decoder think the file is truncated.
+				// If you prefer, you can use the same error
+				// message for this as for LZMA_DATA_ERROR.
+				msg = "Compressed file is truncated or "
+						"otherwise corrupt";
+				break;
+
+			default:
+				// This is most likely LZMA_PROG_ERROR.
+				msg = "Unknown error, possibly a bug";
+				break;
+			}
+
+			fprintf(stderr, "%s: Decoder error: "
+					"%s (error code %u)\n",
+					inname, msg, ret);
+			return false;
+		}
+	}
+}
+
+
+extern int
+main(int argc, char **argv)
+{
+	if (argc <= 1) {
+		fprintf(stderr, "Usage: %s FILES...\n", argv[0]);
+		return EXIT_FAILURE;
+	}
+
+	lzma_stream strm = LZMA_STREAM_INIT;
+
+	bool success = true;
+
+	// Try to decompress all files.
+	for (int i = 1; i < argc; ++i) {
+		if (!init_decoder(&strm)) {
+			// Decoder initialization failed. There's no point
+			// to retry it so we need to exit.
+			success = false;
+			break;
+		}
+
+		FILE *infile = fopen(argv[i], "rb");
+
+		if (infile == NULL) {
+			fprintf(stderr, "%s: Error opening the "
+					"input file: %s\n",
+					argv[i], strerror(errno));
+			success = false;
+		} else {
+			success &= decompress(&strm, argv[i], infile, stdout);
+			fclose(infile);
+		}
+	}
+
+	// Free the memory allocated for the decoder. This only needs to be
+	// done after the last file.
+	lzma_end(&strm);
+
+	if (fclose(stdout)) {
+		fprintf(stderr, "Write error: %s\n", strerror(errno));
+		success = false;
+	}
+
+	return success ? EXIT_SUCCESS : EXIT_FAILURE;
+}

+ 193 - 0
xz.mod/xz/doc/examples/03_compress_custom.c

@@ -0,0 +1,193 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       03_compress_custom.c
+/// \brief      Compress in multi-call mode using x86 BCJ and LZMA2
+///
+/// Usage:      ./03_compress_custom < INFILE > OUTFILE
+///
+/// Example:    ./03_compress_custom < foo > foo.xz
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lzma.h>
+
+
+static bool
+init_encoder(lzma_stream *strm)
+{
+	// Use the default preset (6) for LZMA2.
+	//
+	// The lzma_options_lzma structure and the lzma_lzma_preset() function
+	// are declared in lzma/lzma12.h (src/liblzma/api/lzma/lzma12.h in the
+	// source package or e.g. /usr/include/lzma/lzma12.h depending on
+	// the install prefix).
+	lzma_options_lzma opt_lzma2;
+	if (lzma_lzma_preset(&opt_lzma2, LZMA_PRESET_DEFAULT)) {
+		// It should never fail because the default preset
+		// (and presets 0-9 optionally with LZMA_PRESET_EXTREME)
+		// are supported by all stable liblzma versions.
+		//
+		// (The encoder initialization later in this function may
+		// still fail due to unsupported preset *if* the features
+		// required by the preset have been disabled at build time,
+		// but no-one does such things except on embedded systems.)
+		fprintf(stderr, "Unsupported preset, possibly a bug\n");
+		return false;
+	}
+
+	// Now we could customize the LZMA2 options if we wanted. For example,
+	// we could set the the dictionary size (opt_lzma2.dict_size) to
+	// something else than the default (8 MiB) of the default preset.
+	// See lzma/lzma12.h for details of all LZMA2 options.
+	//
+	// The x86 BCJ filter will try to modify the x86 instruction stream so
+	// that LZMA2 can compress it better. The x86 BCJ filter doesn't need
+	// any options so it will be set to NULL below.
+	//
+	// Construct the filter chain. The uncompressed data goes first to
+	// the first filter in the array, in this case the x86 BCJ filter.
+	// The array is always terminated by setting .id = LZMA_VLI_UNKNOWN.
+	//
+	// See lzma/filter.h for more information about the lzma_filter
+	// structure.
+	lzma_filter filters[] = {
+		{ .id = LZMA_FILTER_X86, .options = NULL },
+		{ .id = LZMA_FILTER_LZMA2, .options = &opt_lzma2 },
+		{ .id = LZMA_VLI_UNKNOWN, .options = NULL },
+	};
+
+	// Initialize the encoder using the custom filter chain.
+	lzma_ret ret = lzma_stream_encoder(strm, filters, LZMA_CHECK_CRC64);
+
+	if (ret == LZMA_OK)
+		return true;
+
+	const char *msg;
+	switch (ret) {
+	case LZMA_MEM_ERROR:
+		msg = "Memory allocation failed";
+		break;
+
+	case LZMA_OPTIONS_ERROR:
+		// We are no longer using a plain preset so this error
+		// message has been edited accordingly compared to
+		// 01_compress_easy.c.
+		msg = "Specified filter chain is not supported";
+		break;
+
+	case LZMA_UNSUPPORTED_CHECK:
+		msg = "Specified integrity check is not supported";
+		break;
+
+	default:
+		msg = "Unknown error, possibly a bug";
+		break;
+	}
+
+	fprintf(stderr, "Error initializing the encoder: %s (error code %u)\n",
+			msg, ret);
+	return false;
+}
+
+
+// This function is identical to the one in 01_compress_easy.c.
+static bool
+compress(lzma_stream *strm, FILE *infile, FILE *outfile)
+{
+	lzma_action action = LZMA_RUN;
+
+	uint8_t inbuf[BUFSIZ];
+	uint8_t outbuf[BUFSIZ];
+
+	strm->next_in = NULL;
+	strm->avail_in = 0;
+	strm->next_out = outbuf;
+	strm->avail_out = sizeof(outbuf);
+
+	while (true) {
+		if (strm->avail_in == 0 && !feof(infile)) {
+			strm->next_in = inbuf;
+			strm->avail_in = fread(inbuf, 1, sizeof(inbuf),
+					infile);
+
+			if (ferror(infile)) {
+				fprintf(stderr, "Read error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			if (feof(infile))
+				action = LZMA_FINISH;
+		}
+
+		lzma_ret ret = lzma_code(strm, action);
+
+		if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
+			size_t write_size = sizeof(outbuf) - strm->avail_out;
+
+			if (fwrite(outbuf, 1, write_size, outfile)
+					!= write_size) {
+				fprintf(stderr, "Write error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			strm->next_out = outbuf;
+			strm->avail_out = sizeof(outbuf);
+		}
+
+		if (ret != LZMA_OK) {
+			if (ret == LZMA_STREAM_END)
+				return true;
+
+			const char *msg;
+			switch (ret) {
+			case LZMA_MEM_ERROR:
+				msg = "Memory allocation failed";
+				break;
+
+			case LZMA_DATA_ERROR:
+				msg = "File size limits exceeded";
+				break;
+
+			default:
+				msg = "Unknown error, possibly a bug";
+				break;
+			}
+
+			fprintf(stderr, "Encoder error: %s (error code %u)\n",
+					msg, ret);
+			return false;
+		}
+	}
+}
+
+
+extern int
+main(void)
+{
+	lzma_stream strm = LZMA_STREAM_INIT;
+
+	bool success = init_encoder(&strm);
+	if (success)
+		success = compress(&strm, stdin, stdout);
+
+	lzma_end(&strm);
+
+	if (fclose(stdout)) {
+		fprintf(stderr, "Write error: %s\n", strerror(errno));
+		success = false;
+	}
+
+	return success ? EXIT_SUCCESS : EXIT_FAILURE;
+}

+ 206 - 0
xz.mod/xz/doc/examples/04_compress_easy_mt.c

@@ -0,0 +1,206 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       04_compress_easy_mt.c
+/// \brief      Compress in multi-call mode using LZMA2 in multi-threaded mode
+///
+/// Usage:      ./04_compress_easy_mt < INFILE > OUTFILE
+///
+/// Example:    ./04_compress_easy_mt < foo > foo.xz
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lzma.h>
+
+
+static bool
+init_encoder(lzma_stream *strm)
+{
+	// The threaded encoder takes the options as pointer to
+	// a lzma_mt structure.
+	lzma_mt mt = {
+		// No flags are needed.
+		.flags = 0,
+
+		// Let liblzma determine a sane block size.
+		.block_size = 0,
+
+		// Use no timeout for lzma_code() calls by setting timeout
+		// to zero. That is, sometimes lzma_code() might block for
+		// a long time (from several seconds to even minutes).
+		// If this is not OK, for example due to progress indicator
+		// needing updates, specify a timeout in milliseconds here.
+		// See the documentation of lzma_mt in lzma/container.h for
+		// information how to choose a reasonable timeout.
+		.timeout = 0,
+
+		// Use the default preset (6) for LZMA2.
+		// To use a preset, filters must be set to NULL.
+		.preset = LZMA_PRESET_DEFAULT,
+		.filters = NULL,
+
+		// Use CRC64 for integrity checking. See also
+		// 01_compress_easy.c about choosing the integrity check.
+		.check = LZMA_CHECK_CRC64,
+	};
+
+	// Detect how many threads the CPU supports.
+	mt.threads = lzma_cputhreads();
+
+	// If the number of CPU cores/threads cannot be detected,
+	// use one thread. Note that this isn't the same as the normal
+	// single-threaded mode as this will still split the data into
+	// blocks and use more RAM than the normal single-threaded mode.
+	// You may want to consider using lzma_easy_encoder() or
+	// lzma_stream_encoder() instead of lzma_stream_encoder_mt() if
+	// lzma_cputhreads() returns 0 or 1.
+	if (mt.threads == 0)
+		mt.threads = 1;
+
+	// If the number of CPU cores/threads exceeds threads_max,
+	// limit the number of threads to keep memory usage lower.
+	// The number 8 is arbitrarily chosen and may be too low or
+	// high depending on the compression preset and the computer
+	// being used.
+	//
+	// FIXME: A better way could be to check the amount of RAM
+	// (or available RAM) and use lzma_stream_encoder_mt_memusage()
+	// to determine if the number of threads should be reduced.
+	const uint32_t threads_max = 8;
+	if (mt.threads > threads_max)
+		mt.threads = threads_max;
+
+	// Initialize the threaded encoder.
+	lzma_ret ret = lzma_stream_encoder_mt(strm, &mt);
+
+	if (ret == LZMA_OK)
+		return true;
+
+	const char *msg;
+	switch (ret) {
+	case LZMA_MEM_ERROR:
+		msg = "Memory allocation failed";
+		break;
+
+	case LZMA_OPTIONS_ERROR:
+		// We are no longer using a plain preset so this error
+		// message has been edited accordingly compared to
+		// 01_compress_easy.c.
+		msg = "Specified filter chain is not supported";
+		break;
+
+	case LZMA_UNSUPPORTED_CHECK:
+		msg = "Specified integrity check is not supported";
+		break;
+
+	default:
+		msg = "Unknown error, possibly a bug";
+		break;
+	}
+
+	fprintf(stderr, "Error initializing the encoder: %s (error code %u)\n",
+			msg, ret);
+	return false;
+}
+
+
+// This function is identical to the one in 01_compress_easy.c.
+static bool
+compress(lzma_stream *strm, FILE *infile, FILE *outfile)
+{
+	lzma_action action = LZMA_RUN;
+
+	uint8_t inbuf[BUFSIZ];
+	uint8_t outbuf[BUFSIZ];
+
+	strm->next_in = NULL;
+	strm->avail_in = 0;
+	strm->next_out = outbuf;
+	strm->avail_out = sizeof(outbuf);
+
+	while (true) {
+		if (strm->avail_in == 0 && !feof(infile)) {
+			strm->next_in = inbuf;
+			strm->avail_in = fread(inbuf, 1, sizeof(inbuf),
+					infile);
+
+			if (ferror(infile)) {
+				fprintf(stderr, "Read error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			if (feof(infile))
+				action = LZMA_FINISH;
+		}
+
+		lzma_ret ret = lzma_code(strm, action);
+
+		if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
+			size_t write_size = sizeof(outbuf) - strm->avail_out;
+
+			if (fwrite(outbuf, 1, write_size, outfile)
+					!= write_size) {
+				fprintf(stderr, "Write error: %s\n",
+						strerror(errno));
+				return false;
+			}
+
+			strm->next_out = outbuf;
+			strm->avail_out = sizeof(outbuf);
+		}
+
+		if (ret != LZMA_OK) {
+			if (ret == LZMA_STREAM_END)
+				return true;
+
+			const char *msg;
+			switch (ret) {
+			case LZMA_MEM_ERROR:
+				msg = "Memory allocation failed";
+				break;
+
+			case LZMA_DATA_ERROR:
+				msg = "File size limits exceeded";
+				break;
+
+			default:
+				msg = "Unknown error, possibly a bug";
+				break;
+			}
+
+			fprintf(stderr, "Encoder error: %s (error code %u)\n",
+					msg, ret);
+			return false;
+		}
+	}
+}
+
+
+extern int
+main(void)
+{
+	lzma_stream strm = LZMA_STREAM_INIT;
+
+	bool success = init_encoder(&strm);
+	if (success)
+		success = compress(&strm, stdin, stdout);
+
+	lzma_end(&strm);
+
+	if (fclose(stdout)) {
+		fprintf(stderr, "Write error: %s\n", strerror(errno));
+		success = false;
+	}
+
+	return success ? EXIT_SUCCESS : EXIT_FAILURE;
+}

+ 206 - 0
xz.mod/xz/doc/examples/11_file_info.c

@@ -0,0 +1,206 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       11_file_info.c
+/// \brief      Get uncompressed size of .xz file(s)
+///
+/// Usage:      ./11_file_info INFILE1.xz [INFILEn.xz]...
+///
+/// Example:    ./11_file_info foo.xz
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <lzma.h>
+
+
+static bool
+print_file_size(lzma_stream *strm, FILE *infile, const char *filename)
+{
+	// Get the file size. In standard C it can be done by seeking to
+	// the end of the file and then getting the file position.
+	// In POSIX one can use fstat() and then st_size from struct stat.
+	// Also note that fseek() and ftell() use long and thus don't support
+	// large files on 32-bit systems (POSIX versions fseeko() and
+	// ftello() can support large files).
+	if (fseek(infile, 0, SEEK_END)) {
+		fprintf(stderr, "Error seeking the file `%s': %s\n",
+				filename, strerror(errno));
+		return false;
+	}
+
+	const long file_size = ftell(infile);
+
+	// The decoder wants to start from the beginning of the .xz file.
+	rewind(infile);
+
+	// Initialize the decoder.
+	lzma_index *i;
+	lzma_ret ret = lzma_file_info_decoder(strm, &i, UINT64_MAX,
+			(uint64_t)file_size);
+	switch (ret) {
+	case LZMA_OK:
+		// Initialization succeeded.
+		break;
+
+	case LZMA_MEM_ERROR:
+		fprintf(stderr, "Out of memory when initializing "
+				"the .xz file info decoder\n");
+		return false;
+
+	case LZMA_PROG_ERROR:
+	default:
+		fprintf(stderr, "Unknown error, possibly a bug\n");
+		return false;
+	}
+
+	// This example program reuses the same lzma_stream structure
+	// for multiple files, so we need to reset this when starting
+	// a new file.
+	strm->avail_in = 0;
+
+	// Buffer for input data.
+	uint8_t inbuf[BUFSIZ];
+
+	// Pass data to the decoder and seek when needed.
+	while (true) {
+		if (strm->avail_in == 0) {
+			strm->next_in = inbuf;
+			strm->avail_in = fread(inbuf, 1, sizeof(inbuf),
+					infile);
+
+			if (ferror(infile)) {
+				fprintf(stderr,
+					"Error reading from `%s': %s\n",
+					filename, strerror(errno));
+				return false;
+			}
+
+			// We don't need to care about hitting the end of
+			// the file so no need to check for feof().
+		}
+
+		ret = lzma_code(strm, LZMA_RUN);
+
+		switch (ret) {
+		case LZMA_OK:
+			break;
+
+		case LZMA_SEEK_NEEDED:
+			// The cast is safe because liblzma won't ask us to
+			// seek past the known size of the input file which
+			// did fit into a long.
+			//
+			// NOTE: Remember to change these to off_t if you
+			// switch fseeko() or lseek().
+			if (fseek(infile, (long)(strm->seek_pos), SEEK_SET)) {
+				fprintf(stderr, "Error seeking the "
+						"file `%s': %s\n",
+						filename, strerror(errno));
+				return false;
+			}
+
+			// The old data in the inbuf is useless now. Set
+			// avail_in to zero so that we will read new input
+			// from the new file position on the next iteration
+			// of this loop.
+			strm->avail_in = 0;
+			break;
+
+		case LZMA_STREAM_END:
+			// File information was successfully decoded.
+			// See <lzma/index.h> for functions that can be
+			// used on it. In this example we just print
+			// the uncompressed size (in bytes) of
+			// the .xz file followed by its file name.
+			printf("%10" PRIu64 " %s\n",
+					lzma_index_uncompressed_size(i),
+					filename);
+
+			// Free the memory of the lzma_index structure.
+			lzma_index_end(i, NULL);
+
+			return true;
+
+		case LZMA_FORMAT_ERROR:
+			// .xz magic bytes weren't found.
+			fprintf(stderr, "The file `%s' is not "
+					"in the .xz format\n", filename);
+			return false;
+
+		case LZMA_OPTIONS_ERROR:
+			fprintf(stderr, "The file `%s' has .xz headers that "
+					"are not supported by this liblzma "
+					"version\n", filename);
+			return false;
+
+		case LZMA_DATA_ERROR:
+			fprintf(stderr, "The file `%s' is corrupt\n",
+					filename);
+			return false;
+
+		case LZMA_MEM_ERROR:
+			fprintf(stderr, "Memory allocation failed when "
+					"decoding the file `%s'\n", filename);
+			return false;
+
+		// LZMA_MEMLIMIT_ERROR shouldn't happen because we used
+		// UINT64_MAX as the limit.
+		//
+		// LZMA_BUF_ERROR shouldn't happen because we always provide
+		// new input when the input buffer is empty. The decoder
+		// knows the input file size and thus won't try to read past
+		// the end of the file.
+		case LZMA_MEMLIMIT_ERROR:
+		case LZMA_BUF_ERROR:
+		case LZMA_PROG_ERROR:
+		default:
+			fprintf(stderr, "Unknown error, possibly a bug\n");
+			return false;
+		}
+	}
+
+	// This line is never reached.
+}
+
+
+extern int
+main(int argc, char **argv)
+{
+	bool success = true;
+	lzma_stream strm = LZMA_STREAM_INIT;
+
+	for (int i = 1; i < argc; ++i) {
+		FILE *infile = fopen(argv[i], "rb");
+
+		if (infile == NULL) {
+			fprintf(stderr, "Cannot open the file `%s': %s\n",
+					argv[i], strerror(errno));
+			success = false;
+		}
+
+		success &= print_file_size(&strm, infile, argv[i]);
+
+		(void)fclose(infile);
+	}
+
+	lzma_end(&strm);
+
+	// Close stdout to catch possible write errors that can occur
+	// when pending data is flushed from the stdio buffers.
+	if (fclose(stdout)) {
+		fprintf(stderr, "Write error: %s\n", strerror(errno));
+		success = false;
+	}
+
+	return success ? EXIT_SUCCESS : EXIT_FAILURE;
+}

+ 25 - 0
xz.mod/xz/doc/examples/Makefile

@@ -0,0 +1,25 @@
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+CC = c99
+CFLAGS = -g
+LDFLAGS = -llzma
+
+PROGS = \
+	01_compress_easy \
+	02_decompress \
+	03_compress_custom \
+	04_compress_easy_mt \
+	11_file_info
+
+all: $(PROGS)
+
+.c:
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+
+clean:
+	-rm -f $(PROGS)

+ 127 - 0
xz.mod/xz/doc/examples_old/xz_pipe_comp.c

@@ -0,0 +1,127 @@
+/*
+ * xz_pipe_comp.c
+ * A simple example of pipe-only xz compressor implementation.
+ * version: 2010-07-12 - by Daniel Mealha Cabrita
+ * Not copyrighted -- provided to the public domain.
+ *
+ * Compiling:
+ * Link with liblzma. GCC example:
+ * $ gcc -llzma xz_pipe_comp.c -o xz_pipe_comp
+ *
+ * Usage example:
+ * $ cat some_file | ./xz_pipe_comp > some_file.xz
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <lzma.h>
+
+
+/* COMPRESSION SETTINGS */
+
+/* analogous to xz CLI options: -0 to -9 */
+#define COMPRESSION_LEVEL 6
+
+/* boolean setting, analogous to xz CLI option: -e */
+#define COMPRESSION_EXTREME true
+
+/* see: /usr/include/lzma/check.h LZMA_CHECK_* */
+#define INTEGRITY_CHECK LZMA_CHECK_CRC64
+
+
+/* read/write buffer sizes */
+#define IN_BUF_MAX	4096
+#define OUT_BUF_MAX	4096
+
+/* error codes */
+#define RET_OK			0
+#define RET_ERROR_INIT		1
+#define RET_ERROR_INPUT		2
+#define RET_ERROR_OUTPUT	3
+#define RET_ERROR_COMPRESSION	4
+
+
+/* note: in_file and out_file must be open already */
+int xz_compress (FILE *in_file, FILE *out_file)
+{
+	uint32_t preset = COMPRESSION_LEVEL | (COMPRESSION_EXTREME ? LZMA_PRESET_EXTREME : 0);
+	lzma_check check = INTEGRITY_CHECK;
+	lzma_stream strm = LZMA_STREAM_INIT; /* alloc and init lzma_stream struct */
+	uint8_t in_buf [IN_BUF_MAX];
+	uint8_t out_buf [OUT_BUF_MAX];
+	size_t in_len;	/* length of useful data in in_buf */
+	size_t out_len;	/* length of useful data in out_buf */
+	bool in_finished = false;
+	bool out_finished = false;
+	lzma_action action;
+	lzma_ret ret_xz;
+	int ret;
+
+	ret = RET_OK;
+
+	/* initialize xz encoder */
+	ret_xz = lzma_easy_encoder (&strm, preset, check);
+	if (ret_xz != LZMA_OK) {
+		fprintf (stderr, "lzma_easy_encoder error: %d\n", (int) ret_xz);
+		return RET_ERROR_INIT;
+	}
+
+	while ((! in_finished) && (! out_finished)) {
+		/* read incoming data */
+		in_len = fread (in_buf, 1, IN_BUF_MAX, in_file);
+
+		if (feof (in_file)) {
+			in_finished = true;
+		}
+		if (ferror (in_file)) {
+			in_finished = true;
+			ret = RET_ERROR_INPUT;
+		}
+
+		strm.next_in = in_buf;
+		strm.avail_in = in_len;
+
+		/* if no more data from in_buf, flushes the
+		   internal xz buffers and closes the xz data
+		   with LZMA_FINISH */
+		action = in_finished ? LZMA_FINISH : LZMA_RUN;
+
+		/* loop until there's no pending compressed output */
+		do {
+			/* out_buf is clean at this point */
+			strm.next_out = out_buf;
+			strm.avail_out = OUT_BUF_MAX;
+
+			/* compress data */
+			ret_xz = lzma_code (&strm, action);
+
+			if ((ret_xz != LZMA_OK) && (ret_xz != LZMA_STREAM_END)) {
+				fprintf (stderr, "lzma_code error: %d\n", (int) ret_xz);
+				out_finished = true;
+				ret = RET_ERROR_COMPRESSION;
+			} else {
+				/* write compressed data */
+				out_len = OUT_BUF_MAX - strm.avail_out;
+				fwrite (out_buf, 1, out_len, out_file);
+				if (ferror (out_file)) {
+					out_finished = true;
+					ret = RET_ERROR_OUTPUT;
+				}
+			}
+		} while (strm.avail_out == 0);
+	}
+
+	lzma_end (&strm);
+	return ret;
+}
+
+int main ()
+{
+	int ret;
+
+	ret = xz_compress (stdin, stdout);
+	return ret;
+}
+

+ 123 - 0
xz.mod/xz/doc/examples_old/xz_pipe_decomp.c

@@ -0,0 +1,123 @@
+/*
+ * xz_pipe_decomp.c
+ * A simple example of pipe-only xz decompressor implementation.
+ * version: 2012-06-14 - by Daniel Mealha Cabrita
+ * Not copyrighted -- provided to the public domain.
+ *
+ * Compiling:
+ * Link with liblzma. GCC example:
+ * $ gcc -llzma xz_pipe_decomp.c -o xz_pipe_decomp
+ *
+ * Usage example:
+ * $ cat some_file.xz | ./xz_pipe_decomp > some_file
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <lzma.h>
+
+
+/* read/write buffer sizes */
+#define IN_BUF_MAX	4096
+#define OUT_BUF_MAX	4096
+
+/* error codes */
+#define RET_OK			0
+#define RET_ERROR_INIT		1
+#define RET_ERROR_INPUT		2
+#define RET_ERROR_OUTPUT	3
+#define RET_ERROR_DECOMPRESSION	4
+
+
+/* note: in_file and out_file must be open already */
+int xz_decompress (FILE *in_file, FILE *out_file)
+{
+	lzma_stream strm = LZMA_STREAM_INIT; /* alloc and init lzma_stream struct */
+	const uint32_t flags = LZMA_TELL_UNSUPPORTED_CHECK | LZMA_CONCATENATED;
+	const uint64_t memory_limit = UINT64_MAX; /* no memory limit */
+	uint8_t in_buf [IN_BUF_MAX];
+	uint8_t out_buf [OUT_BUF_MAX];
+	size_t in_len;	/* length of useful data in in_buf */
+	size_t out_len;	/* length of useful data in out_buf */
+	bool in_finished = false;
+	bool out_finished = false;
+	lzma_action action;
+	lzma_ret ret_xz;
+	int ret;
+
+	ret = RET_OK;
+
+	/* initialize xz decoder */
+	ret_xz = lzma_stream_decoder (&strm, memory_limit, flags);
+	if (ret_xz != LZMA_OK) {
+		fprintf (stderr, "lzma_stream_decoder error: %d\n", (int) ret_xz);
+		return RET_ERROR_INIT;
+	}
+
+	while ((! in_finished) && (! out_finished)) {
+		/* read incoming data */
+		in_len = fread (in_buf, 1, IN_BUF_MAX, in_file);
+
+		if (feof (in_file)) {
+			in_finished = true;
+		}
+		if (ferror (in_file)) {
+			in_finished = true;
+			ret = RET_ERROR_INPUT;
+		}
+
+		strm.next_in = in_buf;
+		strm.avail_in = in_len;
+
+		/* if no more data from in_buf, flushes the
+		   internal xz buffers and closes the decompressed data
+		   with LZMA_FINISH */
+		action = in_finished ? LZMA_FINISH : LZMA_RUN;
+
+		/* loop until there's no pending decompressed output */
+		do {
+			/* out_buf is clean at this point */
+			strm.next_out = out_buf;
+			strm.avail_out = OUT_BUF_MAX;
+
+			/* decompress data */
+			ret_xz = lzma_code (&strm, action);
+
+			if ((ret_xz != LZMA_OK) && (ret_xz != LZMA_STREAM_END)) {
+				fprintf (stderr, "lzma_code error: %d\n", (int) ret_xz);
+				out_finished = true;
+				ret = RET_ERROR_DECOMPRESSION;
+			} else {
+				/* write decompressed data */
+				out_len = OUT_BUF_MAX - strm.avail_out;
+				fwrite (out_buf, 1, out_len, out_file);
+				if (ferror (out_file)) {
+					out_finished = true;
+					ret = RET_ERROR_OUTPUT;
+				}
+			}
+		} while (strm.avail_out == 0);
+	}
+
+	/* Bug fix (2012-06-14): If no errors were detected, check
+	   that the last lzma_code() call returned LZMA_STREAM_END.
+	   If not, the file is probably truncated. */
+	if ((ret == RET_OK) && (ret_xz != LZMA_STREAM_END)) {
+		fprintf (stderr, "Input truncated or corrupt\n");
+		ret = RET_ERROR_DECOMPRESSION;
+	}
+
+	lzma_end (&strm);
+	return ret;
+}
+
+int main ()
+{
+	int ret;
+
+	ret = xz_decompress (stdin, stdout);
+	return ret;
+}
+

+ 224 - 0
xz.mod/xz/doc/faq.txt

@@ -0,0 +1,224 @@
+
+XZ Utils FAQ
+============
+
+Q:  What do the letters XZ mean?
+
+A:  Nothing. They are just two letters, which come from the file format
+    suffix .xz. The .xz suffix was selected, because it seemed to be
+    pretty much unused. It has no deeper meaning.
+
+
+Q:  What are LZMA and LZMA2?
+
+A:  LZMA stands for Lempel-Ziv-Markov chain-Algorithm. It is the name
+    of the compression algorithm designed by Igor Pavlov for 7-Zip.
+    LZMA is based on LZ77 and range encoding.
+
+    LZMA2 is an updated version of the original LZMA to fix a couple of
+    practical issues. In context of XZ Utils, LZMA is called LZMA1 to
+    emphasize that LZMA is not the same thing as LZMA2. LZMA2 is the
+    primary compression algorithm in the .xz file format.
+
+
+Q:  There are many LZMA related projects. How does XZ Utils relate to them?
+
+A:  7-Zip and LZMA SDK are the original projects. LZMA SDK is roughly
+    a subset of the 7-Zip source tree.
+
+    p7zip is 7-Zip's command-line tools ported to POSIX-like systems.
+
+    LZMA Utils provide a gzip-like lzma tool for POSIX-like systems.
+    LZMA Utils are based on LZMA SDK. XZ Utils are the successor to
+    LZMA Utils.
+
+    There are several other projects using LZMA. Most are more or less
+    based on LZMA SDK. See <http://7-zip.org/links.html>.
+
+
+Q:  Why is liblzma named liblzma if its primary file format is .xz?
+    Shouldn't it be e.g. libxz?
+
+A:  When the designing of the .xz format began, the idea was to replace
+    the .lzma format and use the same .lzma suffix. It would have been
+    quite OK to reuse the suffix when there were very few .lzma files
+    around. However, the old .lzma format became popular before the
+    new format was finished. The new format was renamed to .xz but the
+    name of liblzma wasn't changed.
+
+
+Q:  Do XZ Utils support the .7z format?
+
+A:  No. Use 7-Zip (Windows) or p7zip (POSIX-like systems) to handle .7z
+    files.
+
+
+Q:  I have many .tar.7z files. Can I convert them to .tar.xz without
+    spending hours recompressing the data?
+
+A:  In the "extra" directory, there is a script named 7z2lzma.bash which
+    is able to convert some .7z files to the .lzma format (not .xz). It
+    needs the 7za (or 7z) command from p7zip. The script may silently
+    produce corrupt output if certain assumptions are not met, so
+    decompress the resulting .lzma file and compare it against the
+    original before deleting the original file!
+
+
+Q:  I have many .lzma files. Can I quickly convert them to the .xz format?
+
+A:  For now, no. Since XZ Utils supports the .lzma format, it's usually
+    not too bad to keep the old files in the old format. If you want to
+    do the conversion anyway, you need to decompress the .lzma files and
+    then recompress to the .xz format.
+
+    Technically, there is a way to make the conversion relatively fast
+    (roughly twice the time that normal decompression takes). Writing
+    such a tool would take quite a bit of time though, and would probably
+    be useful to only a few people. If you really want such a conversion
+    tool, contact Lasse Collin and offer some money.
+
+
+Q:  I have installed xz, but my tar doesn't recognize .tar.xz files.
+    How can I extract .tar.xz files?
+
+A:  xz -dc foo.tar.xz | tar xf -
+
+
+Q:  Can I recover parts of a broken .xz file (e.g. a corrupted CD-R)?
+
+A:  It may be possible if the file consists of multiple blocks, which
+    typically is not the case if the file was created in single-threaded
+    mode. There is no recovery program yet.
+
+
+Q:  Is (some part of) XZ Utils patented?
+
+A:  Lasse Collin is not aware of any patents that could affect XZ Utils.
+    However, due to the nature of software patents, it's not possible to
+    guarantee that XZ Utils isn't affected by any third party patent(s).
+
+
+Q:  Where can I find documentation about the file format and algorithms?
+
+A:  The .xz format is documented in xz-file-format.txt. It is a container
+    format only, and doesn't include descriptions of any non-trivial
+    filters.
+
+    Documenting LZMA and LZMA2 is planned, but for now, there is no other
+    documentation than the source code. Before you begin, you should know
+    the basics of LZ77 and range-coding algorithms. LZMA is based on LZ77,
+    but LZMA is a lot more complex. Range coding is used to compress
+    the final bitstream like Huffman coding is used in Deflate.
+
+
+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,
+    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
+    of RAM, xz says that it cannot allocate memory. Can I make the
+    script work without modifying it?
+
+A:  Set a default memory usage limit for compression. You can do it e.g.
+    in a shell initialization script such as ~/.bashrc or /etc/profile:
+
+        XZ_DEFAULTS=--memlimit-compress=150MiB
+        export XZ_DEFAULTS
+
+    xz will then scale the compression settings down so that the given
+    memory usage limit is not reached. This way xz shouldn't run out
+    of memory.
+
+    Check also that memory-related resource limits are high enough.
+    On most systems, "ulimit -a" will show the current resource limits.
+
+
+Q:  How do I create files that can be decompressed with XZ Embedded?
+
+A:  See the documentation in XZ Embedded. In short, something like
+    this is a good start:
+
+        xz --check=crc32 --lzma2=preset=6e,dict=64KiB
+
+    Or if a BCJ filter is needed too, e.g. if compressing
+    a kernel image for PowerPC:
+
+        xz --check=crc32 --powerpc --lzma2=preset=6e,dict=64KiB
+
+    Adjust the dictionary size to get a good compromise between
+    compression ratio and decompressor memory usage. Note that
+    in single-call decompression mode of XZ Embedded, a big
+    dictionary doesn't increase memory usage.
+
+
+Q:  Will xz support threaded compression?
+
+A:  It is planned and has been taken into account when designing
+    the .xz file format. Eventually there will probably be three types
+    of threading, each method having its own advantages and disadvantages.
+
+    The simplest method is splitting the uncompressed data into blocks
+    and compressing them in parallel independent from each other.
+    Since the blocks are compressed independently, they can also be
+    decompressed independently. Together with the index feature in .xz,
+    this allows using threads to create .xz files for random-access
+    reading. This also makes threaded decompression possible, although
+    it is not clear if threaded decompression will ever be implemented.
+
+    The independent blocks method has a couple of disadvantages too. It
+    will compress worse than a single-block method. Often the difference
+    is not too big (maybe 1-2 %) but sometimes it can be too big. Also,
+    the memory usage of the compressor increases linearly when adding
+    threads.
+
+    Match finder parallelization is another threading method. It has
+    been in 7-Zip for ages. It doesn't affect compression ratio or
+    memory usage significantly. Among the three threading methods, only
+    this is useful when compressing small files (files that are not
+    significantly bigger than the dictionary). Unfortunately this method
+    scales only to about two CPU cores.
+
+    The third method is pigz-style threading (I use that name, because
+    pigz <http://www.zlib.net/pigz/> uses that method). It doesn't
+    affect compression ratio significantly and scales to many cores.
+    The memory usage scales linearly when threads are added. This isn't
+    significant with pigz, because Deflate uses only a 32 KiB dictionary,
+    but with LZMA2 the memory usage will increase dramatically just like
+    with the independent-blocks method. There is also a constant
+    computational overhead, which may make pigz-method a bit dull on
+    dual-core compared to the parallel match finder method, but with more
+    cores the overhead is not a big deal anymore.
+
+    Combining the threading methods will be possible and also useful.
+    E.g. combining match finder parallelization with pigz-style threading
+    can cut the memory usage by 50 %.
+
+    It is possible that the single-threaded method will be modified to
+    create files identical to the pigz-style method. We'll see once
+    pigz-style threading has been implemented in liblzma.
+
+
+Q:  How do I build a program that needs liblzmadec (lzmadec.h)?
+
+A:  liblzmadec is part of LZMA Utils. XZ Utils has liblzma, but no
+    liblzmadec. The code using liblzmadec should be ported to use
+    liblzma instead. If you cannot or don't want to do that, download
+    LZMA Utils from <https://tukaani.org/lzma/>.
+
+
+Q:  The default build of liblzma is too big. How can I make it smaller?
+
+A:  Give --enable-small to the configure script. Use also appropriate
+    --enable or --disable options to include only those filter encoders
+    and decoders and integrity checks that you actually need. Use
+    CFLAGS=-Os (with GCC) or equivalent to tell your compiler to optimize
+    for size. See INSTALL for information about configure options.
+
+    If the result is still too big, take a look at XZ Embedded. It is
+    a separate project, which provides a limited but significantly
+    smaller XZ decoder implementation than XZ Utils. You can find it
+    at <https://tukaani.org/xz/embedded.html>.
+

+ 150 - 0
xz.mod/xz/doc/history.txt

@@ -0,0 +1,150 @@
+
+History of LZMA Utils and XZ Utils
+==================================
+
+Tukaani distribution
+
+    In 2005, there was a small group working on the Tukaani distribution,
+    which was a Slackware fork. One of the project's goals was to fit the
+    distro on a single 700 MiB ISO-9660 image. Using LZMA instead of gzip
+    helped a lot. Roughly speaking, one could fit data that took 1000 MiB
+    in gzipped form into 700 MiB with LZMA. Naturally, the compression
+    ratio varied across packages, but this was what we got on average.
+
+    Slackware packages have traditionally had .tgz as the filename suffix,
+    which is an abbreviation of .tar.gz. A logical naming for LZMA
+    compressed packages was .tlz, being an abbreviation of .tar.lzma.
+
+    At the end of the year 2007, there was no distribution under the
+    Tukaani project anymore, but development of LZMA Utils was kept going.
+    Still, there were .tlz packages around, because at least Vector Linux
+    (a Slackware based distribution) used LZMA for its packages.
+
+    First versions of the modified pkgtools used the LZMA_Alone tool from
+    Igor Pavlov's LZMA SDK as is. It was fine, because users wouldn't need
+    to interact with LZMA_Alone directly. But people soon wanted to use
+    LZMA for other files too, and the interface of LZMA_Alone wasn't
+    comfortable for those used to gzip and bzip2.
+
+
+First steps of LZMA Utils
+
+    The first version of LZMA Utils (4.22.0) included a shell script called
+    lzmash. It was a wrapper that had a gzip-like command-line interface. It
+    used the LZMA_Alone tool from LZMA SDK to do all the real work. zgrep,
+    zdiff, and related scripts from gzip were adapted to work with LZMA and
+    were part of the first LZMA Utils release too.
+
+    LZMA Utils 4.22.0 included also lzmadec, which was a small (less than
+    10 KiB) decoder-only command-line tool. It was written on top of the
+    decoder-only C code found from the LZMA SDK. lzmadec was convenient in
+    situations where LZMA_Alone (a few hundred KiB) would be too big.
+
+    lzmash and lzmadec were written by Lasse Collin.
+
+
+Second generation
+
+    The lzmash script was an ugly and not very secure hack. The last
+    version of LZMA Utils to use lzmash was 4.27.1.
+
+    LZMA Utils 4.32.0beta1 introduced a new lzma command-line tool written
+    by Ville Koskinen. It was written in C++, and used the encoder and
+    decoder from C++ LZMA SDK with some little modifications. This tool
+    replaced both the lzmash script and the LZMA_Alone command-line tool
+    in LZMA Utils.
+
+    Introducing this new tool caused some temporary incompatibilities,
+    because the LZMA_Alone executable was simply named lzma like the new
+    command-line tool, but they had a completely different command-line
+    interface. The file format was still the same.
+
+    Lasse wrote liblzmadec, which was a small decoder-only library based
+    on the C code found from LZMA SDK. liblzmadec had an API similar to
+    zlib, although there were some significant differences, which made it
+    non-trivial to use it in some applications designed for zlib and
+    libbzip2.
+
+    The lzmadec command-line tool was converted to use liblzmadec.
+
+    Alexandre Sauvé helped converting the build system to use GNU
+    Autotools. This made it easier to test for certain less portable
+    features needed by the new command-line tool.
+
+    Since the new command-line tool never got completely finished (for
+    example, it didn't support the LZMA_OPT environment variable), the
+    intent was to not call 4.32.x stable. Similarly, liblzmadec wasn't
+    polished, but appeared to work well enough, so some people started
+    using it too.
+
+    Because the development of the third generation of LZMA Utils was
+    delayed considerably (3-4 years), the 4.32.x branch had to be kept
+    maintained. It got some bug fixes now and then, and finally it was
+    decided to call it stable, although most of the missing features were
+    never added.
+
+
+File format problems
+
+    The file format used by LZMA_Alone was primitive. It was designed with
+    embedded systems in mind, and thus provided only a minimal set of
+    features. The two biggest problems for non-embedded use were the lack
+    of magic bytes and an integrity check.
+
+    Igor and Lasse started developing a new file format with some help
+    from Ville Koskinen. Also Mark Adler, Mikko Pouru, H. Peter Anvin,
+    and Lars Wirzenius helped with some minor things at some point of the
+    development. Designing the new format took quite a long time (actually,
+    too long a time would be a more appropriate expression). It was mostly
+    because Lasse was quite slow at getting things done due to personal
+    reasons.
+
+    Originally the new format was supposed to use the same .lzma suffix
+    that was already used by the old file format. Switching to the new
+    format wouldn't have caused much trouble when the old format wasn't
+    used by many people. But since the development of the new format took
+    such a long time, the old format got quite popular, and it was decided
+    that the new file format must use a different suffix.
+
+    It was decided to use .xz as the suffix of the new file format. The
+    first stable .xz file format specification was finally released in
+    December 2008. In addition to fixing the most obvious problems of
+    the old .lzma format, the .xz format added some new features like
+    support for multiple filters (compression algorithms), filter chaining
+    (like piping on the command line), and limited random-access reading.
+
+    Currently the primary compression algorithm used in .xz is LZMA2.
+    It is an extension on top of the original LZMA to fix some practical
+    problems: LZMA2 adds support for flushing the encoder, uncompressed
+    chunks, eases stateful decoder implementations, and improves support
+    for multithreading. Since LZMA2 is better than the original LZMA, the
+    original LZMA is not supported in .xz.
+
+
+Transition to XZ Utils
+
+    The early versions of XZ Utils were called LZMA Utils. The first
+    releases were 4.42.0alphas. They dropped the rest of the C++ LZMA SDK.
+    The code was still directly based on LZMA SDK but ported to C and
+    converted from a callback API to a stateful API. Later, Igor Pavlov
+    made a C version of the LZMA encoder too; these ports from C++ to C
+    were independent in LZMA SDK and LZMA Utils.
+
+    The core of the new LZMA Utils was liblzma, a compression library with
+    a zlib-like API. liblzma supported both the old and new file format.
+    The gzip-like lzma command-line tool was rewritten to use liblzma.
+
+    The new LZMA Utils code base was renamed to XZ Utils when the name
+    of the new file format had been decided. The liblzma compression
+    library retained its name though, because changing it would have
+    caused unnecessary breakage in applications already using the early
+    liblzma snapshots.
+
+    The xz command-line tool can emulate the gzip-like lzma tool by
+    creating appropriate symlinks (e.g. lzma -> xz). Thus, practically
+    all scripts using the lzma tool from LZMA Utils will work as is with
+    XZ Utils (and will keep using the old .lzma format). Still, the .lzma
+    format is more or less deprecated. XZ Utils will keep supporting it,
+    but new applications should use the .xz format, and migrating old
+    applications to .xz is often a good idea too.
+

+ 166 - 0
xz.mod/xz/doc/lzma-file-format.txt

@@ -0,0 +1,166 @@
+
+The .lzma File Format
+=====================
+
+        0. Preface
+           0.1. Notices and Acknowledgements
+           0.2. Changes
+        1. File Format
+           1.1. Header
+                1.1.1. Properties
+                1.1.2. Dictionary Size
+                1.1.3. Uncompressed Size
+           1.2. LZMA Compressed Data
+        2. References
+
+
+0. Preface
+
+        This document describes the .lzma file format, which is
+        sometimes also called LZMA_Alone format. It is a legacy file
+        format, which is being or has been replaced by the .xz format.
+        The MIME type of the .lzma format is `application/x-lzma'.
+
+        The most commonly used software to handle .lzma files are
+        LZMA SDK, LZMA Utils, 7-Zip, and XZ Utils. This document
+        describes some of the differences between these implementations
+        and gives hints what subset of the .lzma format is the most
+        portable.
+
+
+0.1. Notices and Acknowledgements
+
+        This file format was designed by Igor Pavlov for use in
+        LZMA SDK. This document was written by Lasse Collin
+        <[email protected]> using the documentation found
+        from the LZMA SDK.
+
+        This document has been put into the public domain.
+
+
+0.2. Changes
+
+        Last modified: 2011-04-12 11:55+0300
+
+
+1. File Format
+
+        +-+-+-+-+-+-+-+-+-+-+-+-+-+==========================+
+        |         Header          |   LZMA Compressed Data   |
+        +-+-+-+-+-+-+-+-+-+-+-+-+-+==========================+
+
+        The .lzma format file consist of 13-byte Header followed by
+        the LZMA Compressed Data.
+
+        Unlike the .gz, .bz2, and .xz formats, it is not possible to
+        concatenate multiple .lzma files as is and expect the
+        decompression tool to decode the resulting file as if it were
+        a single .lzma file.
+
+        For example, the command line tools from LZMA Utils and
+        LZMA SDK silently ignore all the data after the first .lzma
+        stream. In contrast, the command line tool from XZ Utils
+        considers the .lzma file to be corrupt if there is data after
+        the first .lzma stream.
+
+
+1.1. Header
+
+        +------------+----+----+----+----+--+--+--+--+--+--+--+--+
+        | Properties |  Dictionary Size  |   Uncompressed Size   |
+        +------------+----+----+----+----+--+--+--+--+--+--+--+--+
+
+
+1.1.1. Properties
+
+        The Properties field contains three properties. An abbreviation
+        is given in parentheses, followed by the value range of the
+        property. The field consists of
+
+            1) the number of literal context bits (lc, [0, 8]);
+            2) the number of literal position bits (lp, [0, 4]); and
+            3) the number of position bits (pb, [0, 4]).
+
+        The properties are encoded using the following formula:
+
+            Properties = (pb * 5 + lp) * 9 + lc
+
+        The following C code illustrates a straightforward way to
+        decode the Properties field:
+
+            uint8_t lc, lp, pb;
+            uint8_t prop = get_lzma_properties();
+            if (prop > (4 * 5 + 4) * 9 + 8)
+                return LZMA_PROPERTIES_ERROR;
+
+            pb = prop / (9 * 5);
+            prop -= pb * 9 * 5;
+            lp = prop / 9;
+            lc = prop - lp * 9;
+
+        XZ Utils has an additional requirement: lc + lp <= 4. Files
+        which don't follow this requirement cannot be decompressed
+        with XZ Utils. Usually this isn't a problem since the most
+        common lc/lp/pb values are 3/0/2. It is the only lc/lp/pb
+        combination that the files created by LZMA Utils can have,
+        but LZMA Utils can decompress files with any lc/lp/pb.
+
+
+1.1.2. Dictionary Size
+
+        Dictionary Size is stored as an unsigned 32-bit little endian
+        integer. Any 32-bit value is possible, but for maximum
+        portability, only sizes of 2^n and 2^n + 2^(n-1) should be
+        used.
+
+        LZMA Utils creates only files with dictionary size 2^n,
+        16 <= n <= 25. LZMA Utils can decompress files with any
+        dictionary size.
+
+        XZ Utils creates and decompresses .lzma files only with
+        dictionary sizes 2^n and 2^n + 2^(n-1). If some other
+        dictionary size is specified when compressing, the value
+        stored in the Dictionary Size field is a rounded up, but the
+        specified value is still used in the actual compression code.
+
+
+1.1.3. Uncompressed Size
+
+        Uncompressed Size is stored as unsigned 64-bit little endian
+        integer. A special value of 0xFFFF_FFFF_FFFF_FFFF indicates
+        that Uncompressed Size is unknown. End of Payload Marker (*)
+        is used if and only if Uncompressed Size is unknown.
+
+        XZ Utils rejects files whose Uncompressed Size field specifies
+        a known size that is 256 GiB or more. This is to reject false
+        positives when trying to guess if the input file is in the
+        .lzma format. When Uncompressed Size is unknown, there is no
+        limit for the uncompressed size of the file.
+
+        (*) Some tools use the term End of Stream (EOS) marker
+            instead of End of Payload Marker.
+
+
+1.2. LZMA Compressed Data
+
+        Detailed description of the format of this field is out of
+        scope of this document.
+
+
+2. References
+
+        LZMA SDK - The original LZMA implementation
+        http://7-zip.org/sdk.html
+
+        7-Zip
+        http://7-zip.org/
+
+        LZMA Utils - LZMA adapted to POSIX-like systems
+        http://tukaani.org/lzma/
+
+        XZ Utils - The next generation of LZMA Utils
+        http://tukaani.org/xz/
+
+        The .xz file format - The successor of the .lzma format
+        http://tukaani.org/xz/xz-file-format.txt
+

+ 1150 - 0
xz.mod/xz/doc/xz-file-format.txt

@@ -0,0 +1,1150 @@
+
+The .xz File Format
+===================
+
+Version 1.0.4 (2009-08-27)
+
+
+        0. Preface
+           0.1. Notices and Acknowledgements
+           0.2. Getting the Latest Version
+           0.3. Version History
+        1. Conventions
+           1.1. Byte and Its Representation
+           1.2. Multibyte Integers
+        2. Overall Structure of .xz File
+           2.1. Stream
+                2.1.1. Stream Header
+                       2.1.1.1. Header Magic Bytes
+                       2.1.1.2. Stream Flags
+                       2.1.1.3. CRC32
+                2.1.2. Stream Footer
+                       2.1.2.1. CRC32
+                       2.1.2.2. Backward Size
+                       2.1.2.3. Stream Flags
+                       2.1.2.4. Footer Magic Bytes
+           2.2. Stream Padding
+        3. Block
+           3.1. Block Header
+                3.1.1. Block Header Size
+                3.1.2. Block Flags
+                3.1.3. Compressed Size
+                3.1.4. Uncompressed Size
+                3.1.5. List of Filter Flags
+                3.1.6. Header Padding
+                3.1.7. CRC32
+           3.2. Compressed Data
+           3.3. Block Padding
+           3.4. Check
+        4. Index
+           4.1. Index Indicator
+           4.2. Number of Records
+           4.3. List of Records
+                4.3.1. Unpadded Size
+                4.3.2. Uncompressed Size
+           4.4. Index Padding
+           4.5. CRC32
+        5. Filter Chains
+           5.1. Alignment
+           5.2. Security
+           5.3. Filters
+                5.3.1. LZMA2
+                5.3.2. Branch/Call/Jump Filters for Executables
+                5.3.3. Delta
+                       5.3.3.1. Format of the Encoded Output
+           5.4. Custom Filter IDs
+                5.4.1. Reserved Custom Filter ID Ranges
+        6. Cyclic Redundancy Checks
+        7. References
+
+
+0. Preface
+
+        This document describes the .xz file format (filename suffix
+        ".xz", MIME type "application/x-xz"). It is intended that this
+        this format replace the old .lzma format used by LZMA SDK and
+        LZMA Utils.
+
+
+0.1. Notices and Acknowledgements
+
+        This file format was designed by Lasse Collin
+        <[email protected]> and Igor Pavlov.
+
+        Special thanks for helping with this document goes to
+        Ville Koskinen. Thanks for helping with this document goes to
+        Mark Adler, H. Peter Anvin, Mikko Pouru, and Lars Wirzenius.
+
+        This document has been put into the public domain.
+
+
+0.2. Getting the Latest Version
+
+        The latest official version of this document can be downloaded
+        from <http://tukaani.org/xz/xz-file-format.txt>.
+
+        Specific versions of this document have a filename
+        xz-file-format-X.Y.Z.txt where X.Y.Z is the version number.
+        For example, the version 1.0.0 of this document is available
+        at <http://tukaani.org/xz/xz-file-format-1.0.0.txt>.
+
+
+0.3. Version History
+
+        Version   Date          Description
+
+        1.0.4     2009-08-27    Language improvements in Sections 1.2,
+                                2.1.1.2, 3.1.1, 3.1.2, and 5.3.1
+
+        1.0.3     2009-06-05    Spelling fixes in Sections 5.1 and 5.4
+
+        1.0.2     2009-06-04    Typo fixes in Sections 4 and 5.3.1
+
+        1.0.1     2009-06-01    Typo fix in Section 0.3 and minor
+                                clarifications to Sections 2, 2.2,
+                                3.3, 4.4, and 5.3.2
+
+        1.0.0     2009-01-14    The first official version
+
+
+1. Conventions
+
+        The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD",
+        "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+        document are to be interpreted as described in [RFC-2119].
+
+        Indicating a warning means displaying a message, returning
+        appropriate exit status, or doing something else to let the
+        user know that something worth warning occurred. The operation
+        SHOULD still finish if a warning is indicated.
+
+        Indicating an error means displaying a message, returning
+        appropriate exit status, or doing something else to let the
+        user know that something prevented successfully finishing the
+        operation. The operation MUST be aborted once an error has
+        been indicated.
+
+
+1.1. Byte and Its Representation
+
+        In this document, byte is always 8 bits.
+
+        A "null byte" has all bits unset. That is, the value of a null
+        byte is 0x00.
+
+        To represent byte blocks, this document uses notation that
+        is similar to the notation used in [RFC-1952]:
+
+            +-------+
+            |  Foo  |   One byte.
+            +-------+
+
+            +---+---+
+            |  Foo  |   Two bytes; that is, some of the vertical bars
+            +---+---+   can be missing.
+
+            +=======+
+            |  Foo  |   Zero or more bytes.
+            +=======+
+
+        In this document, a boxed byte or a byte sequence declared
+        using this notation is called "a field". The example field
+        above would be called "the Foo field" or plain "Foo".
+
+        If there are many fields, they may be split to multiple lines.
+        This is indicated with an arrow ("--->"):
+
+            +=====+
+            | Foo |
+            +=====+
+
+                 +=====+
+            ---> | Bar |
+                 +=====+
+
+        The above is equivalent to this:
+
+            +=====+=====+
+            | Foo | Bar |
+            +=====+=====+
+
+
+1.2. Multibyte Integers
+
+        Multibyte integers of static length, such as CRC values,
+        are stored in little endian byte order (least significant
+        byte first).
+
+        When smaller values are more likely than bigger values (for
+        example file sizes), multibyte integers are encoded in a
+        variable-length representation:
+          - Numbers in the range [0, 127] are copied as is, and take
+            one byte of space.
+          - Bigger numbers will occupy two or more bytes. All but the
+            last byte of the multibyte representation have the highest
+            (eighth) bit set.
+
+        For now, the value of the variable-length integers is limited
+        to 63 bits, which limits the encoded size of the integer to
+        nine bytes. These limits may be increased in the future if
+        needed.
+
+        The following C code illustrates encoding and decoding of
+        variable-length integers. The functions return the number of
+        bytes occupied by the integer (1-9), or zero on error.
+
+            #include <stddef.h>
+            #include <inttypes.h>
+
+            size_t
+            encode(uint8_t buf[static 9], uint64_t num)
+            {
+                if (num > UINT64_MAX / 2)
+                    return 0;
+
+                size_t i = 0;
+
+                while (num >= 0x80) {
+                    buf[i++] = (uint8_t)(num) | 0x80;
+                    num >>= 7;
+                }
+
+                buf[i++] = (uint8_t)(num);
+
+                return i;
+            }
+
+            size_t
+            decode(const uint8_t buf[], size_t size_max, uint64_t *num)
+            {
+                if (size_max == 0)
+                    return 0;
+
+                if (size_max > 9)
+                    size_max = 9;
+
+                *num = buf[0] & 0x7F;
+                size_t i = 0;
+
+                while (buf[i++] & 0x80) {
+                    if (i >= size_max || buf[i] == 0x00)
+                        return 0;
+
+                    *num |= (uint64_t)(buf[i] & 0x7F) << (i * 7);
+                }
+
+                return i;
+            }
+
+
+2. Overall Structure of .xz File
+
+        A standalone .xz files consist of one or more Streams which may
+        have Stream Padding between or after them:
+
+            +========+================+========+================+
+            | Stream | Stream Padding | Stream | Stream Padding | ...
+            +========+================+========+================+
+
+        The sizes of Stream and Stream Padding are always multiples
+        of four bytes, thus the size of every valid .xz file MUST be
+        a multiple of four bytes.
+
+        While a typical file contains only one Stream and no Stream
+        Padding, a decoder handling standalone .xz files SHOULD support
+        files that have more than one Stream or Stream Padding.
+
+        In contrast to standalone .xz files, when the .xz file format
+        is used as an internal part of some other file format or
+        communication protocol, it usually is expected that the decoder
+        stops after the first Stream, and doesn't look for Stream
+        Padding or possibly other Streams.
+
+
+2.1. Stream
+
+        +-+-+-+-+-+-+-+-+-+-+-+-+=======+=======+     +=======+
+        |     Stream Header     | Block | Block | ... | Block |
+        +-+-+-+-+-+-+-+-+-+-+-+-+=======+=======+     +=======+
+
+             +=======+-+-+-+-+-+-+-+-+-+-+-+-+
+        ---> | Index |     Stream Footer     |
+             +=======+-+-+-+-+-+-+-+-+-+-+-+-+
+
+        All the above fields have a size that is a multiple of four. If
+        Stream is used as an internal part of another file format, it
+        is RECOMMENDED to make the Stream start at an offset that is
+        a multiple of four bytes.
+
+        Stream Header, Index, and Stream Footer are always present in
+        a Stream. The maximum size of the Index field is 16 GiB (2^34).
+
+        There are zero or more Blocks. The maximum number of Blocks is
+        limited only by the maximum size of the Index field.
+
+        Total size of a Stream MUST be less than 8 EiB (2^63 bytes).
+        The same limit applies to the total amount of uncompressed
+        data stored in a Stream.
+
+        If an implementation supports handling .xz files with multiple
+        concatenated Streams, it MAY apply the above limits to the file
+        as a whole instead of limiting per Stream basis.
+
+
+2.1.1. Stream Header
+
+        +---+---+---+---+---+---+-------+------+--+--+--+--+
+        |  Header Magic Bytes   | Stream Flags |   CRC32   |
+        +---+---+---+---+---+---+-------+------+--+--+--+--+
+
+
+2.1.1.1. Header Magic Bytes
+
+        The first six (6) bytes of the Stream are so called Header
+        Magic Bytes. They can be used to identify the file type.
+
+            Using a C array and ASCII:
+            const uint8_t HEADER_MAGIC[6]
+                    = { 0xFD, '7', 'z', 'X', 'Z', 0x00 };
+
+            In plain hexadecimal:
+            FD 37 7A 58 5A 00
+
+        Notes:
+          - The first byte (0xFD) was chosen so that the files cannot
+            be erroneously detected as being in .lzma format, in which
+            the first byte is in the range [0x00, 0xE0].
+          - The sixth byte (0x00) was chosen to prevent applications
+            from misdetecting the file as a text file.
+
+        If the Header Magic Bytes don't match, the decoder MUST
+        indicate an error.
+
+
+2.1.1.2. Stream Flags
+
+        The first byte of Stream Flags is always a null byte. In the
+        future, this byte may be used to indicate a new Stream version
+        or other Stream properties.
+
+        The second byte of Stream Flags is a bit field:
+
+            Bit(s)  Mask  Description
+             0-3    0x0F  Type of Check (see Section 3.4):
+                              ID    Size      Check name
+                              0x00   0 bytes  None
+                              0x01   4 bytes  CRC32
+                              0x02   4 bytes  (Reserved)
+                              0x03   4 bytes  (Reserved)
+                              0x04   8 bytes  CRC64
+                              0x05   8 bytes  (Reserved)
+                              0x06   8 bytes  (Reserved)
+                              0x07  16 bytes  (Reserved)
+                              0x08  16 bytes  (Reserved)
+                              0x09  16 bytes  (Reserved)
+                              0x0A  32 bytes  SHA-256
+                              0x0B  32 bytes  (Reserved)
+                              0x0C  32 bytes  (Reserved)
+                              0x0D  64 bytes  (Reserved)
+                              0x0E  64 bytes  (Reserved)
+                              0x0F  64 bytes  (Reserved)
+             4-7    0xF0  Reserved for future use; MUST be zero for now.
+
+        Implementations SHOULD support at least the Check IDs 0x00
+        (None) and 0x01 (CRC32). Supporting other Check IDs is
+        OPTIONAL. If an unsupported Check is used, the decoder SHOULD
+        indicate a warning or error.
+
+        If any reserved bit is set, the decoder MUST indicate an error.
+        It is possible that there is a new field present which the
+        decoder is not aware of, and can thus parse the Stream Header
+        incorrectly.
+
+
+2.1.1.3. CRC32
+
+        The CRC32 is calculated from the Stream Flags field. It is
+        stored as an unsigned 32-bit little endian integer. If the
+        calculated value does not match the stored one, the decoder
+        MUST indicate an error.
+
+        The idea is that Stream Flags would always be two bytes, even
+        if new features are needed. This way old decoders will be able
+        to verify the CRC32 calculated from Stream Flags, and thus
+        distinguish between corrupt files (CRC32 doesn't match) and
+        files that the decoder doesn't support (CRC32 matches but
+        Stream Flags has reserved bits set).
+
+
+2.1.2. Stream Footer
+
+        +-+-+-+-+---+---+---+---+-------+------+----------+---------+
+        | CRC32 | Backward Size | Stream Flags | Footer Magic Bytes |
+        +-+-+-+-+---+---+---+---+-------+------+----------+---------+
+
+
+2.1.2.1. CRC32
+
+        The CRC32 is calculated from the Backward Size and Stream Flags
+        fields. It is stored as an unsigned 32-bit little endian
+        integer. If the calculated value does not match the stored one,
+        the decoder MUST indicate an error.
+
+        The reason to have the CRC32 field before the Backward Size and
+        Stream Flags fields is to keep the four-byte fields aligned to
+        a multiple of four bytes.
+
+
+2.1.2.2. Backward Size
+
+        Backward Size is stored as a 32-bit little endian integer,
+        which indicates the size of the Index field as multiple of
+        four bytes, minimum value being four bytes:
+
+            real_backward_size = (stored_backward_size + 1) * 4;
+
+        If the stored value does not match the real size of the Index
+        field, the decoder MUST indicate an error.
+
+        Using a fixed-size integer to store Backward Size makes
+        it slightly simpler to parse the Stream Footer when the
+        application needs to parse the Stream backwards.
+
+
+2.1.2.3. Stream Flags
+
+        This is a copy of the Stream Flags field from the Stream
+        Header. The information stored to Stream Flags is needed
+        when parsing the Stream backwards. The decoder MUST compare
+        the Stream Flags fields in both Stream Header and Stream
+        Footer, and indicate an error if they are not identical.
+
+
+2.1.2.4. Footer Magic Bytes
+
+        As the last step of the decoding process, the decoder MUST
+        verify the existence of Footer Magic Bytes. If they don't
+        match, an error MUST be indicated.
+
+            Using a C array and ASCII:
+            const uint8_t FOOTER_MAGIC[2] = { 'Y', 'Z' };
+
+            In hexadecimal:
+            59 5A
+
+        The primary reason to have Footer Magic Bytes is to make
+        it easier to detect incomplete files quickly, without
+        uncompressing. If the file does not end with Footer Magic Bytes
+        (excluding Stream Padding described in Section 2.2), it cannot
+        be undamaged, unless someone has intentionally appended garbage
+        after the end of the Stream.
+
+
+2.2. Stream Padding
+
+        Only the decoders that support decoding of concatenated Streams
+        MUST support Stream Padding.
+
+        Stream Padding MUST contain only null bytes. To preserve the
+        four-byte alignment of consecutive Streams, the size of Stream
+        Padding MUST be a multiple of four bytes. Empty Stream Padding
+        is allowed. If these requirements are not met, the decoder MUST
+        indicate an error.
+
+        Note that non-empty Stream Padding is allowed at the end of the
+        file; there doesn't need to be a new Stream after non-empty
+        Stream Padding. This can be convenient in certain situations
+        [GNU-tar].
+
+        The possibility of Stream Padding MUST be taken into account
+        when designing an application that parses Streams backwards,
+        and the application supports concatenated Streams.
+
+
+3. Block
+
+        +==============+=================+===============+=======+
+        | Block Header | Compressed Data | Block Padding | Check |
+        +==============+=================+===============+=======+
+
+
+3.1. Block Header
+
+        +-------------------+-------------+=================+
+        | Block Header Size | Block Flags | Compressed Size |
+        +-------------------+-------------+=================+
+
+             +===================+======================+
+        ---> | Uncompressed Size | List of Filter Flags |
+             +===================+======================+
+
+             +================+--+--+--+--+
+        ---> | Header Padding |   CRC32   |
+             +================+--+--+--+--+
+
+
+3.1.1. Block Header Size
+
+        This field overlaps with the Index Indicator field (see
+        Section 4.1).
+
+        This field contains the size of the Block Header field,
+        including the Block Header Size field itself. Valid values are
+        in the range [0x01, 0xFF], which indicate the size of the Block
+        Header as multiples of four bytes, minimum size being eight
+        bytes:
+
+            real_header_size = (encoded_header_size + 1) * 4;
+
+        If a Block Header bigger than 1024 bytes is needed in the
+        future, a new field can be added between the Block Header and
+        Compressed Data fields. The presence of this new field would
+        be indicated in the Block Header field.
+
+
+3.1.2. Block Flags
+
+        The Block Flags field is a bit field:
+
+            Bit(s)  Mask  Description
+             0-1    0x03  Number of filters (1-4)
+             2-5    0x3C  Reserved for future use; MUST be zero for now.
+              6     0x40  The Compressed Size field is present.
+              7     0x80  The Uncompressed Size field is present.
+
+        If any reserved bit is set, the decoder MUST indicate an error.
+        It is possible that there is a new field present which the
+        decoder is not aware of, and can thus parse the Block Header
+        incorrectly.
+
+
+3.1.3. Compressed Size
+
+        This field is present only if the appropriate bit is set in
+        the Block Flags field (see Section 3.1.2).
+
+        The Compressed Size field contains the size of the Compressed
+        Data field, which MUST be non-zero. Compressed Size is stored
+        using the encoding described in Section 1.2. If the Compressed
+        Size doesn't match the size of the Compressed Data field, the
+        decoder MUST indicate an error.
+
+
+3.1.4. Uncompressed Size
+
+        This field is present only if the appropriate bit is set in
+        the Block Flags field (see Section 3.1.2).
+
+        The Uncompressed Size field contains the size of the Block
+        after uncompressing. Uncompressed Size is stored using the
+        encoding described in Section 1.2. If the Uncompressed Size
+        does not match the real uncompressed size, the decoder MUST
+        indicate an error.
+
+        Storing the Compressed Size and Uncompressed Size fields serves
+        several purposes:
+          - The decoder knows how much memory it needs to allocate
+            for a temporary buffer in multithreaded mode.
+          - Simple error detection: wrong size indicates a broken file.
+          - Seeking forwards to a specific location in streamed mode.
+
+        It should be noted that the only reliable way to determine
+        the real uncompressed size is to uncompress the Block,
+        because the Block Header and Index fields may contain
+        (intentionally or unintentionally) invalid information.
+
+
+3.1.5. List of Filter Flags
+
+        +================+================+     +================+
+        | Filter 0 Flags | Filter 1 Flags | ... | Filter n Flags |
+        +================+================+     +================+
+
+        The number of Filter Flags fields is stored in the Block Flags
+        field (see Section 3.1.2).
+
+        The format of each Filter Flags field is as follows:
+
+            +===========+====================+===================+
+            | Filter ID | Size of Properties | Filter Properties |
+            +===========+====================+===================+
+
+        Both Filter ID and Size of Properties are stored using the
+        encoding described in Section 1.2. Size of Properties indicates
+        the size of the Filter Properties field as bytes. The list of
+        officially defined Filter IDs and the formats of their Filter
+        Properties are described in Section 5.3.
+
+        Filter IDs greater than or equal to 0x4000_0000_0000_0000
+        (2^62) are reserved for implementation-specific internal use.
+        These Filter IDs MUST never be used in List of Filter Flags.
+
+
+3.1.6. Header Padding
+
+        This field contains as many null byte as it is needed to make
+        the Block Header have the size specified in Block Header Size.
+        If any of the bytes are not null bytes, the decoder MUST
+        indicate an error. It is possible that there is a new field
+        present which the decoder is not aware of, and can thus parse
+        the Block Header incorrectly.
+
+
+3.1.7. CRC32
+
+        The CRC32 is calculated over everything in the Block Header
+        field except the CRC32 field itself. It is stored as an
+        unsigned 32-bit little endian integer. If the calculated
+        value does not match the stored one, the decoder MUST indicate
+        an error.
+
+        By verifying the CRC32 of the Block Header before parsing the
+        actual contents allows the decoder to distinguish between
+        corrupt and unsupported files.
+
+
+3.2. Compressed Data
+
+        The format of Compressed Data depends on Block Flags and List
+        of Filter Flags. Excluding the descriptions of the simplest
+        filters in Section 5.3, the format of the filter-specific
+        encoded data is out of scope of this document.
+
+
+3.3. Block Padding
+
+        Block Padding MUST contain 0-3 null bytes to make the size of
+        the Block a multiple of four bytes. This can be needed when
+        the size of Compressed Data is not a multiple of four. If any
+        of the bytes in Block Padding are not null bytes, the decoder
+        MUST indicate an error.
+
+
+3.4. Check
+
+        The type and size of the Check field depends on which bits
+        are set in the Stream Flags field (see Section 2.1.1.2).
+
+        The Check, when used, is calculated from the original
+        uncompressed data. If the calculated Check does not match the
+        stored one, the decoder MUST indicate an error. If the selected
+        type of Check is not supported by the decoder, it SHOULD
+        indicate a warning or error.
+
+
+4. Index
+
+        +-----------------+===================+
+        | Index Indicator | Number of Records |
+        +-----------------+===================+
+
+             +=================+===============+-+-+-+-+
+        ---> | List of Records | Index Padding | CRC32 |
+             +=================+===============+-+-+-+-+
+
+        Index serves several purposes. Using it, one can
+          - verify that all Blocks in a Stream have been processed;
+          - find out the uncompressed size of a Stream; and
+          - quickly access the beginning of any Block (random access).
+
+
+4.1. Index Indicator
+
+        This field overlaps with the Block Header Size field (see
+        Section 3.1.1). The value of Index Indicator is always 0x00.
+
+
+4.2. Number of Records
+
+        This field indicates how many Records there are in the List
+        of Records field, and thus how many Blocks there are in the
+        Stream. The value is stored using the encoding described in
+        Section 1.2. If the decoder has decoded all the Blocks of the
+        Stream, and then notices that the Number of Records doesn't
+        match the real number of Blocks, the decoder MUST indicate an
+        error.
+
+
+4.3. List of Records
+
+        List of Records consists of as many Records as indicated by the
+        Number of Records field:
+
+            +========+========+
+            | Record | Record | ...
+            +========+========+
+
+        Each Record contains information about one Block:
+
+            +===============+===================+
+            | Unpadded Size | Uncompressed Size |
+            +===============+===================+
+
+        If the decoder has decoded all the Blocks of the Stream, it
+        MUST verify that the contents of the Records match the real
+        Unpadded Size and Uncompressed Size of the respective Blocks.
+
+        Implementation hint: It is possible to verify the Index with
+        constant memory usage by calculating for example SHA-256 of
+        both the real size values and the List of Records, then
+        comparing the hash values. Implementing this using
+        non-cryptographic hash like CRC32 SHOULD be avoided unless
+        small code size is important.
+
+        If the decoder supports random-access reading, it MUST verify
+        that Unpadded Size and Uncompressed Size of every completely
+        decoded Block match the sizes stored in the Index. If only
+        partial Block is decoded, the decoder MUST verify that the
+        processed sizes don't exceed the sizes stored in the Index.
+
+
+4.3.1. Unpadded Size
+
+        This field indicates the size of the Block excluding the Block
+        Padding field. That is, Unpadded Size is the size of the Block
+        Header, Compressed Data, and Check fields. Unpadded Size is
+        stored using the encoding described in Section 1.2. The value
+        MUST never be zero; with the current structure of Blocks, the
+        actual minimum value for Unpadded Size is five.
+
+        Implementation note: Because the size of the Block Padding
+        field is not included in Unpadded Size, calculating the total
+        size of a Stream or doing random-access reading requires
+        calculating the actual size of the Blocks by rounding Unpadded
+        Sizes up to the next multiple of four.
+
+        The reason to exclude Block Padding from Unpadded Size is to
+        ease making a raw copy of Compressed Data without Block
+        Padding. This can be useful, for example, if someone wants
+        to convert Streams to some other file format quickly.
+
+
+4.3.2. Uncompressed Size
+
+        This field indicates the Uncompressed Size of the respective
+        Block as bytes. The value is stored using the encoding
+        described in Section 1.2.
+
+
+4.4. Index Padding
+
+        This field MUST contain 0-3 null bytes to pad the Index to
+        a multiple of four bytes. If any of the bytes are not null
+        bytes, the decoder MUST indicate an error.
+
+
+4.5. CRC32
+
+        The CRC32 is calculated over everything in the Index field
+        except the CRC32 field itself. The CRC32 is stored as an
+        unsigned 32-bit little endian integer. If the calculated
+        value does not match the stored one, the decoder MUST indicate
+        an error.
+
+
+5. Filter Chains
+
+        The Block Flags field defines how many filters are used. When
+        more than one filter is used, the filters are chained; that is,
+        the output of one filter is the input of another filter. The
+        following figure illustrates the direction of data flow.
+
+                    v   Uncompressed Data   ^
+                    |       Filter 0        |
+            Encoder |       Filter 1        | Decoder
+                    |       Filter n        |
+                    v    Compressed Data    ^
+
+
+5.1. Alignment
+
+        Alignment of uncompressed input data is usually the job of
+        the application producing the data. For example, to get the
+        best results, an archiver tool should make sure that all
+        PowerPC executable files in the archive stream start at
+        offsets that are multiples of four bytes.
+
+        Some filters, for example LZMA2, can be configured to take
+        advantage of specified alignment of input data. Note that
+        taking advantage of aligned input can be beneficial also when
+        a filter is not the first filter in the chain. For example,
+        if you compress PowerPC executables, you may want to use the
+        PowerPC filter and chain that with the LZMA2 filter. Because
+        not only the input but also the output alignment of the PowerPC
+        filter is four bytes, it is now beneficial to set LZMA2
+        settings so that the LZMA2 encoder can take advantage of its
+        four-byte-aligned input data.
+
+        The output of the last filter in the chain is stored to the
+        Compressed Data field, which is is guaranteed to be aligned
+        to a multiple of four bytes relative to the beginning of the
+        Stream. This can increase
+          - speed, if the filtered data is handled multiple bytes at
+            a time by the filter-specific encoder and decoder,
+            because accessing aligned data in computer memory is
+            usually faster; and
+          - compression ratio, if the output data is later compressed
+            with an external compression tool.
+
+
+5.2. Security
+
+        If filters would be allowed to be chained freely, it would be
+        possible to create malicious files, that would be very slow to
+        decode. Such files could be used to create denial of service
+        attacks.
+
+        Slow files could occur when multiple filters are chained:
+
+            v   Compressed input data
+            |   Filter 1 decoder (last filter)
+            |   Filter 0 decoder (non-last filter)
+            v   Uncompressed output data
+
+        The decoder of the last filter in the chain produces a lot of
+        output from little input. Another filter in the chain takes the
+        output of the last filter, and produces very little output
+        while consuming a lot of input. As a result, a lot of data is
+        moved inside the filter chain, but the filter chain as a whole
+        gets very little work done.
+
+        To prevent this kind of slow files, there are restrictions on
+        how the filters can be chained. These restrictions MUST be
+        taken into account when designing new filters.
+
+        The maximum number of filters in the chain has been limited to
+        four, thus there can be at maximum of three non-last filters.
+        Of these three non-last filters, only two are allowed to change
+        the size of the data.
+
+        The non-last filters, that change the size of the data, MUST
+        have a limit how much the decoder can compress the data: the
+        decoder SHOULD produce at least n bytes of output when the
+        filter is given 2n bytes of input. This  limit is not
+        absolute, but significant deviations MUST be avoided.
+
+        The above limitations guarantee that if the last filter in the
+        chain produces 4n bytes of output, the chain as a whole will
+        produce at least n bytes of output.
+
+
+5.3. Filters
+
+5.3.1. LZMA2
+
+        LZMA (Lempel-Ziv-Markov chain-Algorithm) is a general-purpose
+        compression algorithm with high compression ratio and fast
+        decompression. LZMA is based on LZ77 and range coding
+        algorithms.
+
+        LZMA2 is an extension on top of the original LZMA. LZMA2 uses
+        LZMA internally, but adds support for flushing the encoder,
+        uncompressed chunks, eases stateful decoder implementations,
+        and improves support for multithreading. Thus, the plain LZMA
+        will not be supported in this file format.
+
+            Filter ID:                  0x21
+            Size of Filter Properties:  1 byte
+            Changes size of data:       Yes
+            Allow as a non-last filter: No
+            Allow as the last filter:   Yes
+
+            Preferred alignment:
+                Input data:             Adjustable to 1/2/4/8/16 byte(s)
+                Output data:            1 byte
+
+        The format of the one-byte Filter Properties field is as
+        follows:
+
+            Bits   Mask   Description
+            0-5    0x3F   Dictionary Size
+            6-7    0xC0   Reserved for future use; MUST be zero for now.
+
+        Dictionary Size is encoded with one-bit mantissa and five-bit
+        exponent. The smallest dictionary size is 4 KiB and the biggest
+        is 4 GiB.
+
+            Raw value   Mantissa   Exponent   Dictionary size
+                0           2         11         4 KiB
+                1           3         11         6 KiB
+                2           2         12         8 KiB
+                3           3         12        12 KiB
+                4           2         13        16 KiB
+                5           3         13        24 KiB
+                6           2         14        32 KiB
+              ...         ...        ...      ...
+               35           3         27       768 MiB
+               36           2         28      1024 MiB
+               37           3         29      1536 MiB
+               38           2         30      2048 MiB
+               39           3         30      3072 MiB
+               40           2         31      4096 MiB - 1 B
+
+        Instead of having a table in the decoder, the dictionary size
+        can be decoded using the following C code:
+
+            const uint8_t bits = get_dictionary_flags() & 0x3F;
+            if (bits > 40)
+                return DICTIONARY_TOO_BIG; // Bigger than 4 GiB
+
+            uint32_t dictionary_size;
+            if (bits == 40) {
+                dictionary_size = UINT32_MAX;
+            } else {
+                dictionary_size = 2 | (bits & 1);
+                dictionary_size <<= bits / 2 + 11;
+            }
+
+
+5.3.2. Branch/Call/Jump Filters for Executables
+
+        These filters convert relative branch, call, and jump
+        instructions to their absolute counterparts in executable
+        files. This conversion increases redundancy and thus
+        compression ratio.
+
+            Size of Filter Properties:  0 or 4 bytes
+            Changes size of data:       No
+            Allow as a non-last filter: Yes
+            Allow as the last filter:   No
+
+        Below is the list of filters in this category. The alignment
+        is the same for both input and output data.
+
+            Filter ID   Alignment   Description
+              0x04       1 byte     x86 filter (BCJ)
+              0x05       4 bytes    PowerPC (big endian) filter
+              0x06      16 bytes    IA64 filter
+              0x07       4 bytes    ARM (little endian) filter
+              0x08       2 bytes    ARM Thumb (little endian) filter
+              0x09       4 bytes    SPARC filter
+
+        If the size of Filter Properties is four bytes, the Filter
+        Properties field contains the start offset used for address
+        conversions. It is stored as an unsigned 32-bit little endian
+        integer. The start offset MUST be a multiple of the alignment
+        of the filter as listed in the table above; if it isn't, the
+        decoder MUST indicate an error. If the size of Filter
+        Properties is zero, the start offset is zero.
+
+        Setting the start offset may be useful if an executable has
+        multiple sections, and there are many cross-section calls.
+        Taking advantage of this feature usually requires usage of
+        the Subblock filter, whose design is not complete yet.
+
+
+5.3.3. Delta
+
+        The Delta filter may increase compression ratio when the value
+        of the next byte correlates with the value of an earlier byte
+        at specified distance.
+
+            Filter ID:                  0x03
+            Size of Filter Properties:  1 byte
+            Changes size of data:       No
+            Allow as a non-last filter: Yes
+            Allow as the last filter:   No
+
+            Preferred alignment:
+                Input data:             1 byte
+                Output data:            Same as the original input data
+
+        The Properties byte indicates the delta distance, which can be
+        1-256 bytes backwards from the current byte: 0x00 indicates
+        distance of 1 byte and 0xFF distance of 256 bytes.
+
+
+5.3.3.1. Format of the Encoded Output
+
+        The code below illustrates both encoding and decoding with
+        the Delta filter.
+
+            // Distance is in the range [1, 256].
+            const unsigned int distance = get_properties_byte() + 1;
+            uint8_t pos = 0;
+            uint8_t delta[256];
+
+            memset(delta, 0, sizeof(delta));
+
+            while (1) {
+                const int byte = read_byte();
+                if (byte == EOF)
+                    break;
+
+                uint8_t tmp = delta[(uint8_t)(distance + pos)];
+                if (is_encoder) {
+                    tmp = (uint8_t)(byte) - tmp;
+                    delta[pos] = (uint8_t)(byte);
+                } else {
+                    tmp = (uint8_t)(byte) + tmp;
+                    delta[pos] = tmp;
+                }
+
+                write_byte(tmp);
+                --pos;
+            }
+
+
+5.4. Custom Filter IDs
+
+        If a developer wants to use custom Filter IDs, he has two
+        choices. The first choice is to contact Lasse Collin and ask
+        him to allocate a range of IDs for the developer.
+
+        The second choice is to generate a 40-bit random integer,
+        which the developer can use as his personal Developer ID.
+        To minimize the risk of collisions, Developer ID has to be
+        a randomly generated integer, not manually selected "hex word".
+        The following command, which works on many free operating
+        systems, can be used to generate Developer ID:
+
+            dd if=/dev/urandom bs=5 count=1 | hexdump
+
+        The developer can then use his Developer ID to create unique
+        (well, hopefully unique) Filter IDs.
+
+            Bits    Mask                    Description
+             0-15   0x0000_0000_0000_FFFF   Filter ID
+            16-55   0x00FF_FFFF_FFFF_0000   Developer ID
+            56-62   0x3F00_0000_0000_0000   Static prefix: 0x3F
+
+        The resulting 63-bit integer will use 9 bytes of space when
+        stored using the encoding described in Section 1.2. To get
+        a shorter ID, see the beginning of this Section how to
+        request a custom ID range.
+
+
+5.4.1. Reserved Custom Filter ID Ranges
+
+        Range                       Description
+        0x0000_0300 - 0x0000_04FF   Reserved to ease .7z compatibility
+        0x0002_0000 - 0x0007_FFFF   Reserved to ease .7z compatibility
+        0x0200_0000 - 0x07FF_FFFF   Reserved to ease .7z compatibility
+
+
+6. Cyclic Redundancy Checks
+
+        There are several incompatible variations to calculate CRC32
+        and CRC64. For simplicity and clarity, complete examples are
+        provided to calculate the checks as they are used in this file
+        format. Implementations MAY use different code as long as it
+        gives identical results.
+
+        The program below reads data from standard input, calculates
+        the CRC32 and CRC64 values, and prints the calculated values
+        as big endian hexadecimal strings to standard output.
+
+            #include <stddef.h>
+            #include <inttypes.h>
+            #include <stdio.h>
+
+            uint32_t crc32_table[256];
+            uint64_t crc64_table[256];
+
+            void
+            init(void)
+            {
+                static const uint32_t poly32 = UINT32_C(0xEDB88320);
+                static const uint64_t poly64
+                        = UINT64_C(0xC96C5795D7870F42);
+
+                for (size_t i = 0; i < 256; ++i) {
+                    uint32_t crc32 = i;
+                    uint64_t crc64 = i;
+
+                    for (size_t j = 0; j < 8; ++j) {
+                        if (crc32 & 1)
+                            crc32 = (crc32 >> 1) ^ poly32;
+                        else
+                            crc32 >>= 1;
+
+                        if (crc64 & 1)
+                            crc64 = (crc64 >> 1) ^ poly64;
+                        else
+                            crc64 >>= 1;
+                    }
+
+                    crc32_table[i] = crc32;
+                    crc64_table[i] = crc64;
+                }
+            }
+
+            uint32_t
+            crc32(const uint8_t *buf, size_t size, uint32_t crc)
+            {
+                crc = ~crc;
+                for (size_t i = 0; i < size; ++i)
+                    crc = crc32_table[buf[i] ^ (crc & 0xFF)]
+                            ^ (crc >> 8);
+                return ~crc;
+            }
+
+            uint64_t
+            crc64(const uint8_t *buf, size_t size, uint64_t crc)
+            {
+                crc = ~crc;
+                for (size_t i = 0; i < size; ++i)
+                    crc = crc64_table[buf[i] ^ (crc & 0xFF)]
+                            ^ (crc >> 8);
+                return ~crc;
+            }
+
+            int
+            main()
+            {
+                init();
+
+                uint32_t value32 = 0;
+                uint64_t value64 = 0;
+                uint64_t total_size = 0;
+                uint8_t buf[8192];
+
+                while (1) {
+                    const size_t buf_size
+                            = fread(buf, 1, sizeof(buf), stdin);
+                    if (buf_size == 0)
+                        break;
+
+                    total_size += buf_size;
+                    value32 = crc32(buf, buf_size, value32);
+                    value64 = crc64(buf, buf_size, value64);
+                }
+
+                printf("Bytes:  %" PRIu64 "\n", total_size);
+                printf("CRC-32: 0x%08" PRIX32 "\n", value32);
+                printf("CRC-64: 0x%016" PRIX64 "\n", value64);
+
+                return 0;
+            }
+
+
+7. References
+
+        LZMA SDK - The original LZMA implementation
+        http://7-zip.org/sdk.html
+
+        LZMA Utils - LZMA adapted to POSIX-like systems
+        http://tukaani.org/lzma/
+
+        XZ Utils - The next generation of LZMA Utils
+        http://tukaani.org/xz/
+
+        [RFC-1952]
+        GZIP file format specification version 4.3
+        http://www.ietf.org/rfc/rfc1952.txt
+          - Notation of byte boxes in section "2.1. Overall conventions"
+
+        [RFC-2119]
+        Key words for use in RFCs to Indicate Requirement Levels
+        http://www.ietf.org/rfc/rfc2119.txt
+
+        [GNU-tar]
+        GNU tar 1.21 manual
+        http://www.gnu.org/software/tar/manual/html_node/Blocking-Factor.html
+          - Node 9.4.2 "Blocking Factor", paragraph that begins
+            "gzip will complain about trailing garbage"
+          - Note that this URL points to the latest version of the
+            manual, and may some day not contain the note which is in
+            1.21. For the exact version of the manual, download GNU
+            tar 1.21: ftp://ftp.gnu.org/pub/gnu/tar/tar-1.21.tar.gz
+

+ 78 - 0
xz.mod/xz/dos/INSTALL.txt

@@ -0,0 +1,78 @@
+
+Building XZ Utils for DOS
+=========================
+
+Introduction
+
+    This document explains how to build XZ Utils for DOS using DJGPP.
+    The resulting binaries should run at least on various DOS versions
+    and under Windows 95/98/98SE/ME.
+
+    This is somewhat experimental and has got very little testing.
+
+    Note: Makefile and config.h are updated only now and then. This
+    means that if you checked out a development version, building for
+    DOS might not work without updating Makefile and config.h first.
+
+
+Getting and Installing DJGPP
+
+    You may use <http://www.delorie.com/djgpp/zip-picker.html> to help
+    deciding what to download. If you are only interested in building
+    XZ Utils, the zip-picker may list files that you don't strictly
+    need. However, using the zip-picker can still be worth it to get a
+    nice short summary of installation instructions (they can be found
+    from readme.1st too).
+
+    For a more manual method, first select a mirror from
+    <http://www.delorie.com/djgpp/getting.html> and go the
+    subdirectory named "current". You need the following files:
+
+        unzip32.exe  (if you don't already have a LFN-capable unzipper)
+        v2/djdev205.zip
+        v2gnu/bnu234b.zip
+        v2gnu/gcc920b.zip
+        v2gnu/mak43b.zip
+        v2misc/csdpmi7b.zip
+
+    If newer versions are available, probably you should try them first.
+    Note that versions older than djdev205.zip aren't supported. Also
+    note that you want csdpmi7b.zip even if you run under Windows or
+    DOSEMU because the XZ Utils Makefile will embed cwsdstub.exe to
+    the resulting xz.exe.
+
+    See the instructions in readme.1st found from djdev205.zip. Here's
+    a short summary, but you should still read readme.1st.
+
+        C:\> mkdir DJGPP
+        C:\> cd DJGPP
+        C:\DJGPP> c:\download\unzip32 c:\download\djdev205.zip
+        C:\DJGPP> c:\download\unzip32 c:\download\bnu234b.zip
+        C:\DJGPP> c:\download\unzip32 c:\download\gcc920b.zip
+        C:\DJGPP> c:\download\unzip32 c:\download\mak43b.zip
+        C:\DJGPP> c:\download\unzip32 c:\download\csdpmi7b.zip
+
+        C:\DJGPP> set PATH=C:\DJGPP\BIN;%PATH%
+        C:\DJGPP> set DJGPP=C:\DJGPP\DJGPP.ENV
+
+    You may want to add the last two lines into AUTOEXEC.BAT or have,
+    for example, DJGPP.BAT which you can run before using DJGPP.
+
+    Make sure you use completely upper case path in the DJGPP environment
+    variable. This is not required by DJGPP, but the XZ Utils Makefile is
+    a bit stupid and expects that everything in DJGPP environment variable
+    is uppercase.
+
+
+Building
+
+    You need to have an environment that supports long filenames (LFN).
+    Once you have built XZ Utils, the resulting binaries can be run
+    without long filename support.
+
+    Run "make" in this directory (the directory containing this
+    INSTALL.txt). You should get xz.exe (and a bunch of temporary files).
+    Other tools are not built. Having e.g. xzdec.exe doesn't save much
+    space compared to xz.exe because the DJGPP runtime makes the .exe
+    quite big anyway.
+

+ 146 - 0
xz.mod/xz/dos/Makefile

@@ -0,0 +1,146 @@
+###############################################################################
+#
+# Makefile to build XZ Utils using DJGPP
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+###############################################################################
+
+# For debugging, set comment "#define NDEBUG 1" from config.h to enable
+# the assert() macro, set STRIP=rem to disable stripping, and finally
+# e.g. CFLAGS="-g -O0".
+CC = gcc
+STRIP = strip
+CPPFLAGS =
+CFLAGS = -g -Wall -Wextra -Wfatal-errors -march=i386 -mtune=i686 -O2
+LDFLAGS = -lemu
+
+ALL_CFLAGS = -std=gnu99
+
+ALL_CPPFLAGS = \
+	-I. \
+	-I../lib \
+	-I../src/common \
+	-I../src/liblzma/api \
+	-I../src/liblzma/common \
+	-I../src/liblzma/check \
+	-I../src/liblzma/rangecoder \
+	-I../src/liblzma/lz \
+	-I../src/liblzma/lzma \
+	-I../src/liblzma/delta \
+	-I../src/liblzma/simple \
+	-DHAVE_CONFIG_H
+
+ALL_CPPFLAGS += $(CPPFLAGS)
+ALL_CFLAGS += $(CFLAGS)
+
+.PHONY: all
+all: xz.exe
+
+SRCS_C = \
+	../lib/getopt.c \
+	../lib/getopt1.c \
+	../src/common/tuklib_cpucores.c \
+	../src/common/tuklib_exit.c \
+	../src/common/tuklib_mbstr_fw.c \
+	../src/common/tuklib_mbstr_width.c \
+	../src/common/tuklib_open_stdxxx.c \
+	../src/common/tuklib_physmem.c \
+	../src/common/tuklib_progname.c \
+	../src/liblzma/check/check.c \
+	../src/liblzma/check/crc32_table.c \
+	../src/liblzma/check/crc64_table.c \
+	../src/liblzma/check/sha256.c \
+	../src/liblzma/common/alone_decoder.c \
+	../src/liblzma/common/alone_encoder.c \
+	../src/liblzma/common/block_decoder.c \
+	../src/liblzma/common/block_encoder.c \
+	../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/file_info.c \
+	../src/liblzma/common/filter_common.c \
+	../src/liblzma/common/filter_decoder.c \
+	../src/liblzma/common/filter_encoder.c \
+	../src/liblzma/common/filter_flags_decoder.c \
+	../src/liblzma/common/filter_flags_encoder.c \
+	../src/liblzma/common/hardware_physmem.c \
+	../src/liblzma/common/index.c \
+	../src/liblzma/common/index_decoder.c \
+	../src/liblzma/common/index_encoder.c \
+	../src/liblzma/common/index_hash.c \
+	../src/liblzma/common/stream_decoder.c \
+	../src/liblzma/common/stream_encoder.c \
+	../src/liblzma/common/stream_flags_common.c \
+	../src/liblzma/common/stream_flags_decoder.c \
+	../src/liblzma/common/stream_flags_encoder.c \
+	../src/liblzma/common/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_decoder.c \
+	../src/liblzma/delta/delta_encoder.c \
+	../src/liblzma/lz/lz_decoder.c \
+	../src/liblzma/lz/lz_encoder.c \
+	../src/liblzma/lz/lz_encoder_mf.c \
+	../src/liblzma/lzma/fastpos_table.c \
+	../src/liblzma/lzma/lzma2_decoder.c \
+	../src/liblzma/lzma/lzma2_encoder.c \
+	../src/liblzma/lzma/lzma_decoder.c \
+	../src/liblzma/lzma/lzma_encoder.c \
+	../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/rangecoder/price_table.c \
+	../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_decoder.c \
+	../src/liblzma/simple/simple_encoder.c \
+	../src/liblzma/simple/sparc.c \
+	../src/liblzma/simple/x86.c \
+	../src/xz/args.c \
+	../src/xz/coder.c \
+	../src/xz/file_io.c \
+	../src/xz/hardware.c \
+	../src/xz/list.c \
+	../src/xz/main.c \
+	../src/xz/message.c \
+	../src/xz/mytime.c \
+	../src/xz/options.c \
+	../src/xz/signals.c \
+	../src/xz/suffix.c \
+	../src/xz/util.c
+SRCS_ASM = \
+	../src/liblzma/check/crc32_x86.S \
+	../src/liblzma/check/crc64_x86.S
+
+OBJS_C = $(SRCS_C:.c=.o)
+OBJS_ASM = $(SRCS_ASM:.S=.o)
+OBJS = $(OBJS_C) $(OBJS_ASM)
+
+getopt.h:
+	update ../lib/getopt.in.h getopt.h
+
+$(OBJS): getopt.h
+
+$(OBJS_C): %.o: %.c
+	$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
+
+$(OBJS_ASM): %.o: %.S
+	$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
+
+# Make xz.exe not depend on an external DPMI server.
+xz.exe: $(OBJS)
+	$(CC) $(ALL_CFLAGS) $(OBJS) $(LDFLAGS) -o $@
+	$(STRIP) --strip-all $@
+	exe2coff $@
+	del $@
+	copy /b $(DJGPP:DJGPP.ENV=BIN\CWSDSTUB.EXE) + $(@:.exe=) $@
+	del $(@:.exe=)

+ 123 - 0
xz.mod/xz/dos/README.txt

@@ -0,0 +1,123 @@
+
+XZ Utils on DOS
+===============
+
+DOS-specific filename handling
+
+    xz detects at runtime if long filename (LFN) support is
+    available and will use it by default. It can be disabled by
+    setting an environment variable:
+
+        set lfn=n
+
+    When xz is in LFN mode, it behaves pretty much the same as it
+    does on other operating systems. Examples:
+
+        xz foo.tar          -> foo.tar.xz
+        xz -d foo.tar.xz    -> foo.tar
+
+        xz -F lzma foo.tar  -> foo.tar.lzma
+        xz -d foo.tar.lzma  -> foo.tar
+
+    When LFN support isn't available or it is disabled with LFN=n
+    environment setting, xz works in short filename (SFN) mode. This
+    affects filename suffix handling when compressing.
+
+    When compressing to the .xz format in SFN mode:
+
+      - Files without an extension get .xz just like on LFN systems.
+
+      - *.tar files become *.txz (shorthand for *.tar.xz). *.txz
+        is recognized by xz on all supported operating systems.
+        (Try to avoid confusing this with gzipped .txt files.)
+
+      - Files with 1-3 character extension have their extension modified
+        so that the last character is a dash ("-"). If the extension
+        is already three characters, the last character is lost. The
+        resulting *.?- or *.??- filename is recognized in LFN mode, but
+        it isn't recognized by xz on other operating systems.
+
+    Examples:
+
+        xz foo              -> foo.xz     |   xz -d foo.xz    -> foo
+        xz foo.tar          -> foo.txz    |   xz -d foo.txz   -> foo.tar
+        xz foo.c            -> foo.c-     |   xz -d foo.c-    -> foo.c
+        xz read.me          -> read.me-   |   xz -d read.me-  -> read.me
+        xz foo.txt          -> foo.tx-    |   xz -d foo.tx-   -> foo.tx   !
+
+    Note that in the last example above, the third character of the
+    filename extension is lost.
+
+    When compressing to the legacy .lzma format in SFN mode:
+
+      - *.tar files become *.tlz (shorthand for *.tar.lzma). *.tlz
+        is recognized by xz on all supported operating systems.
+
+      - Other files become *.lzm. The original filename extension
+        is lost. *.lzm is recognized also in LFN mode, but it is not
+        recognized by xz on other operating systems.
+
+    Examples:
+
+        xz -F lzma foo      -> foo.lzm    |   xz -d foo.lzm   -> foo
+        xz -F lzma foo.tar  -> foo.tlz    |   xz -d foo.tlz   -> foo.tar
+        xz -F lzma foo.c    -> foo.lzm    |   xz -d foo.lzm   -> foo      !
+        xz -F lzma read.me  -> read.lzm   |   xz -d read.lzm  -> read     !
+        xz -F lzma foo.txt  -> foo.lzm    |   xz -d foo.lzm   -> foo      !
+
+    When compressing with a custom suffix (-S .SUF, --suffix=.SUF) to
+    any file format:
+
+      - If the suffix begins with a dot, the filename extension is
+        replaced with the new suffix. The original extension is lost.
+
+      - If the suffix doesn't begin with a dot and the filename has no
+        extension and the filename given on the command line doesn't
+        have a dot at the end, the custom suffix is appended just like
+        on LFN systems.
+
+      - If the suffix doesn't begin with a dot and the filename has
+        an extension (or an extension-less filename is given with a dot
+        at the end), the last 1-3 characters of the filename extension
+        may get overwritten to fit the given custom suffix.
+
+    Examples:
+
+        xz -S x foo        -> foox      |  xz -dS x foox      -> foo
+        xz -S x foo.       -> foo.x     |  xz -dS x foo.x     -> foo
+        xz -S .x foo       -> foo.x     |  xz -dS .x foo.x    -> foo
+        xz -S .x foo.      -> foo.x     |  xz -dS .x foo.x    -> foo
+        xz -S x.y foo      -> foox.y    |  xz -dS x.y foox.y  -> foo
+        xz -S .a foo.c     -> foo.a     |  xz -dS .a foo.a    -> foo      !
+        xz -S a  foo.c     -> foo.ca    |  xz -dS a foo.ca    -> foo.c
+        xz -S ab foo.c     -> foo.cab   |  xz -dS ab foo.cab  -> foo.c
+        xz -S ab read.me   -> read.mab  |  xz -dS ab read.mab -> read.m   !
+        xz -S ab foo.txt   -> foo.tab   |  xz -dS ab foo.tab  -> foo.t    !
+        xz -S abc foo.txt  -> foo.abc   |  xz -dS abc foo.abc -> foo      !
+
+    When decompressing, the suffix handling in SFN mode is the same as
+    in LFN mode. The DOS-specific filenames *.lzm, *.?-, and *.??- are
+    recognized also in LFN mode.
+
+    xz handles certain uncommon situations safely:
+
+      - If the generated output filename refers to the same file as
+        the input file, xz detects this and refuses to compress or
+        decompress the input file even if --force is used. This can
+        happen when giving an overlong filename in SFN mode. E.g.
+        "xz -S x foo.texinfo" would try to write to foo.tex which on
+        SFN system is the same file as foo.texinfo.
+
+      - If the generated output filename is a special file like "con"
+        or "prn", xz detects this and refuses to compress or decompress
+        the input file even if --force is used.
+
+
+Bugs
+
+    xz doesn't necessarily work in Dosbox. It should work in DOSEMU.
+
+    Pressing Ctrl-c or Ctrl-Break won't remove the incomplete target file
+    when running under Windows XP Command Prompt (something goes wrong
+    with SIGINT handling). It works correctly under Windows 95/98/98SE/ME.
+

+ 144 - 0
xz.mod/xz/dos/config.h

@@ -0,0 +1,144 @@
+/* How many MiB of RAM to assume if the real amount cannot be determined. */
+#define ASSUME_RAM 32
+
+/* Define to 1 if crc32 integrity check is enabled. */
+#define HAVE_CHECK_CRC32 1
+
+/* Define to 1 if crc64 integrity check is enabled. */
+#define HAVE_CHECK_CRC64 1
+
+/* Define to 1 if sha256 integrity check is enabled. */
+#define HAVE_CHECK_SHA256 1
+
+/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
+#define HAVE_DECODERS 1
+
+/* Define to 1 if arm decoder is enabled. */
+#define HAVE_DECODER_ARM 1
+
+/* Define to 1 if armthumb decoder is enabled. */
+#define HAVE_DECODER_ARMTHUMB 1
+
+/* Define to 1 if delta decoder is enabled. */
+#define HAVE_DECODER_DELTA 1
+
+/* Define to 1 if ia64 decoder is enabled. */
+#define HAVE_DECODER_IA64 1
+
+/* Define to 1 if lzma1 decoder is enabled. */
+#define HAVE_DECODER_LZMA1 1
+
+/* Define to 1 if lzma2 decoder is enabled. */
+#define HAVE_DECODER_LZMA2 1
+
+/* Define to 1 if powerpc decoder is enabled. */
+#define HAVE_DECODER_POWERPC 1
+
+/* Define to 1 if sparc decoder is enabled. */
+#define HAVE_DECODER_SPARC 1
+
+/* Define to 1 if x86 decoder is enabled. */
+#define HAVE_DECODER_X86 1
+
+/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */
+#define HAVE_ENCODERS 1
+
+/* Define to 1 if arm encoder is enabled. */
+#define HAVE_ENCODER_ARM 1
+
+/* Define to 1 if armthumb encoder is enabled. */
+#define HAVE_ENCODER_ARMTHUMB 1
+
+/* Define to 1 if delta encoder is enabled. */
+#define HAVE_ENCODER_DELTA 1
+
+/* Define to 1 if ia64 encoder is enabled. */
+#define HAVE_ENCODER_IA64 1
+
+/* Define to 1 if lzma1 encoder is enabled. */
+#define HAVE_ENCODER_LZMA1 1
+
+/* Define to 1 if lzma2 encoder is enabled. */
+#define HAVE_ENCODER_LZMA2 1
+
+/* Define to 1 if powerpc encoder is enabled. */
+#define HAVE_ENCODER_POWERPC 1
+
+/* Define to 1 if sparc encoder is enabled. */
+#define HAVE_ENCODER_SPARC 1
+
+/* Define to 1 if x86 encoder is enabled. */
+#define HAVE_ENCODER_X86 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 to enable bt2 match finder. */
+#define HAVE_MF_BT2 1
+
+/* Define to 1 to enable bt3 match finder. */
+#define HAVE_MF_BT3 1
+
+/* Define to 1 to enable bt4 match finder. */
+#define HAVE_MF_BT4 1
+
+/* Define to 1 to enable hc3 match finder. */
+#define HAVE_MF_HC3 1
+
+/* Define to 1 to enable hc4 match finder. */
+#define HAVE_MF_HC4 1
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the `utimes' function. */
+#define HAVE_UTIMES 1
+
+/* Define to 1 or 0, depending whether the compiler supports simple visibility
+   declarations. */
+#define HAVE_VISIBILITY 0
+
+/* Define to 1 if the system has the type `_Bool'. */
+#define HAVE__BOOL 1
+
+/* Define to 1 if the GNU C extension __builtin_assume_aligned is supported.
+   */
+#define HAVE___BUILTIN_ASSUME_ALIGNED 1
+
+/* Define to 1 if the GNU C extensions __builtin_bswap16/32/64 are supported.
+   */
+#define HAVE___BUILTIN_BSWAPXX 1
+
+/* Define to 1 to disable debugging code. */
+#define NDEBUG 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "[email protected]"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "XZ Utils"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "https://tukaani.org/xz/"
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* Define to 1 if the system supports fast unaligned access to 16-bit and
+   32-bit integers. */
+#define TUKLIB_FAST_UNALIGNED_ACCESS 1

+ 115 - 0
xz.mod/xz/extra/7z2lzma/7z2lzma.bash

@@ -0,0 +1,115 @@
+#!/bin/bash
+#
+#############################################################################
+#
+# 7z2lzma.bash is very primitive .7z to .lzma converter. The input file must
+# have exactly one LZMA compressed stream, which has been created with the
+# default lc, lp, and pb values. The CRC32 in the .7z archive is not checked,
+# and the script may seem to succeed while it actually created a corrupt .lzma
+# file. You should always try uncompressing both the original .7z and the
+# created .lzma and compare that the output is identical.
+#
+# This script requires basic GNU tools and 7z or 7za tool from p7zip.
+#
+# Last modified: 2009-01-15 14:25+0200
+#
+#############################################################################
+#
+# Author: Lasse Collin <[email protected]>
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+#############################################################################
+
+# You can use 7z or 7za, both will work.
+SEVENZIP=7za
+
+if [ $# != 2 -o -z "$1" -o -z "$2" ]; then
+	echo "Usage: $0 input.7z output.lzma"
+	exit 1
+fi
+
+# Converts an integer variable to little endian binary integer.
+int2bin()
+{
+	local LEN=$1
+	local NUM=$2
+	local HEX=(0 1 2 3 4 5 6 7 8 9 A B C D E F)
+	local I
+	for ((I=0; I < "$LEN"; ++I)); do
+		printf "\\x${HEX[(NUM >> 4) & 0x0F]}${HEX[NUM & 0x0F]}"
+		NUM=$((NUM >> 8))
+	done
+}
+
+# Make sure we get possible errors from pipes.
+set -o pipefail
+
+# Get information about the input file. At least older 7z and 7za versions
+# may return with zero exit status even when an error occurred, so check
+# if the output has any lines beginning with "Error".
+INFO=$("$SEVENZIP" l -slt "$1")
+if [ $? != 0 ] || printf '%s\n' "$INFO" | grep -q ^Error; then
+	printf '%s\n' "$INFO"
+	exit 1
+fi
+
+# Check if the input file has more than one compressed block.
+if printf '%s\n' "$INFO" | grep -q '^Block = 1'; then
+	echo "Cannot convert, because the input file has more than"
+	echo "one compressed block."
+	exit 1
+fi
+
+# Get compressed, uncompressed, and dictionary size.
+CSIZE=$(printf '%s\n' "$INFO" | sed -rn 's|^Packed Size = ([0-9]+$)|\1|p')
+USIZE=$(printf '%s\n' "$INFO" | sed -rn 's|^Size = ([0-9]+$)|\1|p')
+DICT=$(printf '%s\n' "$INFO" | sed -rn 's|^Method = LZMA:([0-9]+[bkm]?)$|\1|p')
+
+if [ -z "$CSIZE" -o -z "$USIZE" -o -z "$DICT" ]; then
+	echo "Parsing output of $SEVENZIP failed. Maybe the file uses some"
+	echo "other compression method than plain LZMA."
+	exit 1
+fi
+
+# The following assumes that the default lc, lp, and pb settings were used.
+# Otherwise the output will be corrupt.
+printf '\x5D' > "$2"
+
+# Dictionary size can be either was power of two, bytes, kibibytes, or
+# mebibytes. We need to convert it to bytes.
+case $DICT in
+	*b)
+		DICT=${DICT%b}
+		;;
+	*k)
+		DICT=${DICT%k}
+		DICT=$((DICT << 10))
+		;;
+	*m)
+		DICT=${DICT%m}
+		DICT=$((DICT << 20))
+		;;
+	*)
+		DICT=$((1 << DICT))
+		;;
+esac
+int2bin 4 "$DICT" >> "$2"
+
+# Uncompressed size
+int2bin 8 "$USIZE" >> "$2"
+
+# Copy the actual compressed data. Using multiple dd commands to avoid
+# copying large amount of data with one-byte block size, which would be
+# annoyingly slow.
+BS=8192
+BIGSIZE=$((CSIZE / BS))
+CSIZE=$((CSIZE % BS))
+{
+	dd of=/dev/null bs=32 count=1 \
+		&& dd bs="$BS" count="$BIGSIZE" \
+		&& dd bs=1 count="$CSIZE"
+} < "$1" >> "$2"
+
+exit $?

+ 88 - 0
xz.mod/xz/extra/scanlzma/scanlzma.c

@@ -0,0 +1,88 @@
+/*
+    scanlzma, scan for lzma compressed data in stdin and echo it to stdout.
+    Copyright (C) 2006 Timo Lindfors
+
+    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 Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+*/
+
+/* Usage example:
+
+   $ wget http://www.wifi-shop.cz/Files/produkty/wa2204/wa2204av1.4.1.zip
+   $ unzip wa2204av1.4.1.zip
+   $ gcc scanlzma.c -o scanlzma -Wall
+   $ ./scanlzma 0 < WA2204-FW1.4.1/linux-1.4.bin | lzma -c -d | strings | grep -i "copyright"
+   UpdateDD version 2.5, Copyright (C) 2005 Philipp Benner.
+   Copyright (C) 2005 Philipp Benner.
+   Copyright (C) 2005 Philipp Benner.
+   mawk 1.3%s%s %s, Copyright (C) Michael D. Brennan
+   # Copyright (C) 1998, 1999, 2001  Henry Spencer.
+   ...
+
+*/
+
+
+/* LZMA compressed file format */
+/* --------------------------- */
+/* Offset Size Description */
+/*   0     1   Special LZMA properties for compressed data */
+/*   1     4   Dictionary size (little endian) */
+/*   5     8   Uncompressed size (little endian). -1 means unknown size */
+/*  13         Compressed data */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define BUFSIZE 4096
+
+int find_lzma_header(unsigned char *buf) {
+	return (buf[0] < 0xE1
+		&& buf[0] == 0x5d
+		&& buf[4] < 0x20
+		&& (memcmp (buf + 10 , "\x00\x00\x00", 3) == 0
+		    || (memcmp (buf + 5, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 8) == 0)));
+}
+
+int main(int argc, char *argv[]) {
+	unsigned char buf[BUFSIZE];
+	int ret, i, numlzma, blocks=0;
+
+	if (argc != 2) {
+		printf("usage: %s numlzma < infile | lzma -c -d > outfile\n"
+		       "where numlzma is index of lzma file to extract, starting from zero.\n",
+		       argv[0]);
+		exit(1);
+	}
+	numlzma = atoi(argv[1]);
+
+	for (;;) {
+		/* Read data. */
+		ret = fread(buf, BUFSIZE, 1, stdin);
+		if (ret != 1)
+			break;
+
+		/* Scan for signature. */
+		for (i = 0; i<BUFSIZE-23; i++) {
+			if (find_lzma_header(buf+i) && numlzma-- <= 0) {
+				fwrite(buf+i, (BUFSIZE-i), 1, stdout);
+				for (;;) {
+					int ch;
+					ch = getchar();
+					if (ch == EOF)
+						exit(0);
+					putchar(ch);
+				}
+			}
+		}
+		blocks++;
+	}
+	return 1;
+}

+ 32 - 0
xz.mod/xz/lib/Makefile.am

@@ -0,0 +1,32 @@
+##
+## Copyright (C) 2004-2007 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+
+## Not using gnulib-tool, at least for now. It is likely that we won't
+## need anything else from Gnulib than getopt_long().
+
+noinst_LIBRARIES = libgnu.a
+
+libgnu_a_SOURCES =
+libgnu_a_DEPENDENCIES = $(LIBOBJS)
+libgnu_a_LIBADD = $(LIBOBJS)
+
+EXTRA_DIST = getopt.in.h getopt.c getopt1.c getopt_int.h
+BUILT_SOURCES = $(GETOPT_H)
+MOSTLYCLEANFILES = getopt.h getopt.h-t
+
+getopt.h: getopt.in.h
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  cat $(srcdir)/getopt.in.h; \
+	} > $@-t
+	mv -f $@-t $@

+ 1197 - 0
xz.mod/xz/lib/getopt.c

@@ -0,0 +1,1197 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to [email protected]
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006
+	Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef __VMS
+# include <unixlib.h>
+#endif
+
+/* Completely disable NLS for getopt. We won't include translations for it
+   anyway. If the system lacks getopt_long, missing translations probably
+   aren't a problem.  */
+/*
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+*/
+#define _(msgid) (msgid)
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Unlike standard Unix `getopt', functions like `getopt_long'
+   let the user intersperse the options with the other arguments.
+
+   As `getopt_long' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Using `getopt' or setting the environment variable POSIXLY_CORRECT
+   disables permutation.
+   Then the application's behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data.  */
+
+static struct _getopt_data getopt_data;
+
+
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (d->__nonoption_flags_len > 0)					      \
+    {									      \
+      char __tmp = __getopt_nonoption_flags[ch1];			      \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];	      \
+      __getopt_nonoption_flags[ch2] = __tmp;				      \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else	/* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif	/* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+  int bottom = d->__first_nonopt;
+  int middle = d->__last_nonopt;
+  int top = d->optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+	 presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+	d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+      else
+	{
+	  memset (__mempcpy (new_str, __getopt_nonoption_flags,
+			     d->__nonoption_flags_max_len),
+		  '\0', top + 1 - d->__nonoption_flags_max_len);
+	  d->__nonoption_flags_max_len = top + 1;
+	  __getopt_nonoption_flags = new_str;
+	}
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+	{
+	  /* Bottom segment is the short one.  */
+	  int len = middle - bottom;
+	  register int i;
+
+	  /* Swap it with the top part of the top segment.  */
+	  for (i = 0; i < len; i++)
+	    {
+	      tem = argv[bottom + i];
+	      argv[bottom + i] = argv[top - (middle - bottom) + i];
+	      argv[top - (middle - bottom) + i] = tem;
+	      SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+	    }
+	  /* Exclude the moved bottom segment from further swapping.  */
+	  top -= len;
+	}
+      else
+	{
+	  /* Top segment is the short one.  */
+	  int len = top - middle;
+	  register int i;
+
+	  /* Swap it with the bottom part of the bottom segment.  */
+	  for (i = 0; i < len; i++)
+	    {
+	      tem = argv[bottom + i];
+	      argv[bottom + i] = argv[middle + i];
+	      argv[middle + i] = tem;
+	      SWAP_FLAGS (bottom + i, middle + i);
+	    }
+	  /* Exclude the moved top segment from further swapping.  */
+	  bottom += len;
+	}
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  d->__first_nonopt += (d->optind - d->__last_nonopt);
+  d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+static const char *
+_getopt_initialize (int argc, char **argv, const char *optstring,
+		    int posixly_correct, struct _getopt_data *d)
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  d->__first_nonopt = d->__last_nonopt = d->optind;
+
+  d->__nextchar = NULL;
+
+  d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      d->__ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      d->__ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (d->__posixly_correct)
+    d->__ordering = REQUIRE_ORDER;
+  else
+    d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (!d->__posixly_correct
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (d->__nonoption_flags_max_len == 0)
+	{
+	  if (__getopt_nonoption_flags == NULL
+	      || __getopt_nonoption_flags[0] == '\0')
+	    d->__nonoption_flags_max_len = -1;
+	  else
+	    {
+	      const char *orig_str = __getopt_nonoption_flags;
+	      int len = d->__nonoption_flags_max_len = strlen (orig_str);
+	      if (d->__nonoption_flags_max_len < argc)
+		d->__nonoption_flags_max_len = argc;
+	      __getopt_nonoption_flags =
+		(char *) malloc (d->__nonoption_flags_max_len);
+	      if (__getopt_nonoption_flags == NULL)
+		d->__nonoption_flags_max_len = -1;
+	      else
+		memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+			'\0', d->__nonoption_flags_max_len - len);
+	    }
+	}
+      d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+    }
+  else
+    d->__nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.
+
+   If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
+   environment variable were set.  */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+		    const struct option *longopts, int *longind,
+		    int long_only, int posixly_correct, struct _getopt_data *d)
+{
+  int print_errors = d->opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  d->optarg = NULL;
+
+  if (d->optind == 0 || !d->__initialized)
+    {
+      if (d->optind == 0)
+	d->optind = 1;	/* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring,
+				      posixly_correct, d);
+      d->__initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+		      || (d->optind < d->__nonoption_flags_len		      \
+			  && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+  if (d->__nextchar == NULL || *d->__nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+	 moved back by the user (who may also have changed the arguments).  */
+      if (d->__last_nonopt > d->optind)
+	d->__last_nonopt = d->optind;
+      if (d->__first_nonopt > d->optind)
+	d->__first_nonopt = d->optind;
+
+      if (d->__ordering == PERMUTE)
+	{
+	  /* If we have just processed some options following some non-options,
+	     exchange them so that the options come first.  */
+
+	  if (d->__first_nonopt != d->__last_nonopt
+	      && d->__last_nonopt != d->optind)
+	    exchange ((char **) argv, d);
+	  else if (d->__last_nonopt != d->optind)
+	    d->__first_nonopt = d->optind;
+
+	  /* Skip any additional non-options
+	     and extend the range of non-options previously skipped.  */
+
+	  while (d->optind < argc && NONOPTION_P)
+	    d->optind++;
+	  d->__last_nonopt = d->optind;
+	}
+
+      /* The special ARGV-element `--' means premature end of options.
+	 Skip it like a null option,
+	 then exchange with previous non-options as if it were an option,
+	 then skip everything else like a non-option.  */
+
+      if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+	{
+	  d->optind++;
+
+	  if (d->__first_nonopt != d->__last_nonopt
+	      && d->__last_nonopt != d->optind)
+	    exchange ((char **) argv, d);
+	  else if (d->__first_nonopt == d->__last_nonopt)
+	    d->__first_nonopt = d->optind;
+	  d->__last_nonopt = argc;
+
+	  d->optind = argc;
+	}
+
+      /* If we have done all the ARGV-elements, stop the scan
+	 and back over any non-options that we skipped and permuted.  */
+
+      if (d->optind == argc)
+	{
+	  /* Set the next-arg-index to point at the non-options
+	     that we previously skipped, so the caller will digest them.  */
+	  if (d->__first_nonopt != d->__last_nonopt)
+	    d->optind = d->__first_nonopt;
+	  return -1;
+	}
+
+      /* If we have come to a non-option and did not permute it,
+	 either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+	{
+	  if (d->__ordering == REQUIRE_ORDER)
+	    return -1;
+	  d->optarg = argv[d->optind++];
+	  return 1;
+	}
+
+      /* We have found another option-ARGV-element.
+	 Skip the initial punctuation.  */
+
+      d->__nextchar = (argv[d->optind] + 1
+		  + (longopts != NULL && argv[d->optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[d->optind][1] == '-'
+	  || (long_only && (argv[d->optind][2]
+			    || !strchr (optstring, argv[d->optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+	/* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+	 or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+	if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+	  {
+	    if ((unsigned int) (nameend - d->__nextchar)
+		== (unsigned int) strlen (p->name))
+	      {
+		/* Exact match found.  */
+		pfound = p;
+		indfound = option_index;
+		exact = 1;
+		break;
+	      }
+	    else if (pfound == NULL)
+	      {
+		/* First nonexact match found.  */
+		pfound = p;
+		indfound = option_index;
+	      }
+	    else if (long_only
+		     || pfound->has_arg != p->has_arg
+		     || pfound->flag != p->flag
+		     || pfound->val != p->val)
+	      /* Second or later nonexact match found.  */
+	      ambig = 1;
+	  }
+
+      if (ambig && !exact)
+	{
+	  if (print_errors)
+	    {
+#if defined _LIBC && defined USE_IN_LIBIO
+	      char *buf;
+
+	      if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+			      argv[0], argv[d->optind]) >= 0)
+		{
+		  _IO_flockfile (stderr);
+
+		  int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+		  ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+		  __fxprintf (NULL, "%s", buf);
+
+		  ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+		  _IO_funlockfile (stderr);
+
+		  free (buf);
+		}
+#else
+	      fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+		       argv[0], argv[d->optind]);
+#endif
+	    }
+	  d->__nextchar += strlen (d->__nextchar);
+	  d->optind++;
+	  d->optopt = 0;
+	  return '?';
+	}
+
+      if (pfound != NULL)
+	{
+	  option_index = indfound;
+	  d->optind++;
+	  if (*nameend)
+	    {
+	      /* Don't test has_arg with >, because some C compilers don't
+		 allow it to be used on enums.  */
+	      if (pfound->has_arg)
+		d->optarg = nameend + 1;
+	      else
+		{
+		  if (print_errors)
+		    {
+#if defined _LIBC && defined USE_IN_LIBIO
+		      char *buf;
+		      int n;
+#endif
+
+		      if (argv[d->optind - 1][1] == '-')
+			{
+			  /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+			  n = __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+					  argv[0], pfound->name);
+#else
+			  fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+				   argv[0], pfound->name);
+#endif
+			}
+		      else
+			{
+			  /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+			  n = __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+					  argv[0], argv[d->optind - 1][0],
+					  pfound->name);
+#else
+			  fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+				   argv[0], argv[d->optind - 1][0],
+				   pfound->name);
+#endif
+			}
+
+#if defined _LIBC && defined USE_IN_LIBIO
+		      if (n >= 0)
+			{
+			  _IO_flockfile (stderr);
+
+			  int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+			  ((_IO_FILE *) stderr)->_flags2
+			    |= _IO_FLAGS2_NOTCANCEL;
+
+			  __fxprintf (NULL, "%s", buf);
+
+			  ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+			  _IO_funlockfile (stderr);
+
+			  free (buf);
+			}
+#endif
+		    }
+
+		  d->__nextchar += strlen (d->__nextchar);
+
+		  d->optopt = pfound->val;
+		  return '?';
+		}
+	    }
+	  else if (pfound->has_arg == 1)
+	    {
+	      if (d->optind < argc)
+		d->optarg = argv[d->optind++];
+	      else
+		{
+		  if (print_errors)
+		    {
+#if defined _LIBC && defined USE_IN_LIBIO
+		      char *buf;
+
+		      if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+				      argv[0], argv[d->optind - 1]) >= 0)
+			{
+			  _IO_flockfile (stderr);
+
+			  int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+			  ((_IO_FILE *) stderr)->_flags2
+			    |= _IO_FLAGS2_NOTCANCEL;
+
+			  __fxprintf (NULL, "%s", buf);
+
+			  ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+			  _IO_funlockfile (stderr);
+
+			  free (buf);
+			}
+#else
+		      fprintf (stderr,
+			       _("%s: option `%s' requires an argument\n"),
+			       argv[0], argv[d->optind - 1]);
+#endif
+		    }
+		  d->__nextchar += strlen (d->__nextchar);
+		  d->optopt = pfound->val;
+		  return optstring[0] == ':' ? ':' : '?';
+		}
+	    }
+	  d->__nextchar += strlen (d->__nextchar);
+	  if (longind != NULL)
+	    *longind = option_index;
+	  if (pfound->flag)
+	    {
+	      *(pfound->flag) = pfound->val;
+	      return 0;
+	    }
+	  return pfound->val;
+	}
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+	 or the option starts with '--' or is not a valid short
+	 option, then it's an error.
+	 Otherwise interpret it as a short option.  */
+      if (!long_only || argv[d->optind][1] == '-'
+	  || strchr (optstring, *d->__nextchar) == NULL)
+	{
+	  if (print_errors)
+	    {
+#if defined _LIBC && defined USE_IN_LIBIO
+	      char *buf;
+	      int n;
+#endif
+
+	      if (argv[d->optind][1] == '-')
+		{
+		  /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+		  n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+				  argv[0], d->__nextchar);
+#else
+		  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+			   argv[0], d->__nextchar);
+#endif
+		}
+	      else
+		{
+		  /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+		  n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+				  argv[0], argv[d->optind][0], d->__nextchar);
+#else
+		  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+			   argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+		}
+
+#if defined _LIBC && defined USE_IN_LIBIO
+	      if (n >= 0)
+		{
+		  _IO_flockfile (stderr);
+
+		  int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+		  ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+		  __fxprintf (NULL, "%s", buf);
+
+		  ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+		  _IO_funlockfile (stderr);
+
+		  free (buf);
+		}
+#endif
+	    }
+	  d->__nextchar = (char *) "";
+	  d->optind++;
+	  d->optopt = 0;
+	  return '?';
+	}
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *d->__nextchar++;
+    char *temp = strchr (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*d->__nextchar == '\0')
+      ++d->optind;
+
+    if (temp == NULL || c == ':')
+      {
+	if (print_errors)
+	  {
+#if defined _LIBC && defined USE_IN_LIBIO
+	      char *buf;
+	      int n;
+#endif
+
+	    if (d->__posixly_correct)
+	      {
+		/* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+		n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+				argv[0], c);
+#else
+		fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+	      }
+	    else
+	      {
+#if defined _LIBC && defined USE_IN_LIBIO
+		n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
+				argv[0], c);
+#else
+		fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+	      }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+	    if (n >= 0)
+	      {
+		_IO_flockfile (stderr);
+
+		int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+		((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+		__fxprintf (NULL, "%s", buf);
+
+		((_IO_FILE *) stderr)->_flags2 = old_flags2;
+		_IO_funlockfile (stderr);
+
+		free (buf);
+	      }
+#endif
+	  }
+	d->optopt = c;
+	return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+	char *nameend;
+	const struct option *p;
+	const struct option *pfound = NULL;
+	int exact = 0;
+	int ambig = 0;
+	int indfound = 0;
+	int option_index;
+
+	/* This is an option that requires an argument.  */
+	if (*d->__nextchar != '\0')
+	  {
+	    d->optarg = d->__nextchar;
+	    /* If we end this ARGV-element by taking the rest as an arg,
+	       we must advance to the next element now.  */
+	    d->optind++;
+	  }
+	else if (d->optind == argc)
+	  {
+	    if (print_errors)
+	      {
+		/* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+		char *buf;
+
+		if (__asprintf (&buf,
+				_("%s: option requires an argument -- %c\n"),
+				argv[0], c) >= 0)
+		  {
+		    _IO_flockfile (stderr);
+
+		    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+		    ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+		    __fxprintf (NULL, "%s", buf);
+
+		    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+		    _IO_funlockfile (stderr);
+
+		    free (buf);
+		  }
+#else
+		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+			 argv[0], c);
+#endif
+	      }
+	    d->optopt = c;
+	    if (optstring[0] == ':')
+	      c = ':';
+	    else
+	      c = '?';
+	    return c;
+	  }
+	else
+	  /* We already incremented `d->optind' once;
+	     increment it again when taking next ARGV-elt as argument.  */
+	  d->optarg = argv[d->optind++];
+
+	/* optarg is now the argument, see if it's in the
+	   table of longopts.  */
+
+	for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+	     nameend++)
+	  /* Do nothing.  */ ;
+
+	/* Test all long options for either exact match
+	   or abbreviated matches.  */
+	for (p = longopts, option_index = 0; p->name; p++, option_index++)
+	  if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+	    {
+	      if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+		{
+		  /* Exact match found.  */
+		  pfound = p;
+		  indfound = option_index;
+		  exact = 1;
+		  break;
+		}
+	      else if (pfound == NULL)
+		{
+		  /* First nonexact match found.  */
+		  pfound = p;
+		  indfound = option_index;
+		}
+	      else
+		/* Second or later nonexact match found.  */
+		ambig = 1;
+	    }
+	if (ambig && !exact)
+	  {
+	    if (print_errors)
+	      {
+#if defined _LIBC && defined USE_IN_LIBIO
+		char *buf;
+
+		if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+				argv[0], argv[d->optind]) >= 0)
+		  {
+		    _IO_flockfile (stderr);
+
+		    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+		    ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+		    __fxprintf (NULL, "%s", buf);
+
+		    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+		    _IO_funlockfile (stderr);
+
+		    free (buf);
+		  }
+#else
+		fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+			 argv[0], argv[d->optind]);
+#endif
+	      }
+	    d->__nextchar += strlen (d->__nextchar);
+	    d->optind++;
+	    return '?';
+	  }
+	if (pfound != NULL)
+	  {
+	    option_index = indfound;
+	    if (*nameend)
+	      {
+		/* Don't test has_arg with >, because some C compilers don't
+		   allow it to be used on enums.  */
+		if (pfound->has_arg)
+		  d->optarg = nameend + 1;
+		else
+		  {
+		    if (print_errors)
+		      {
+#if defined _LIBC && defined USE_IN_LIBIO
+			char *buf;
+
+			if (__asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+					argv[0], pfound->name) >= 0)
+			  {
+			    _IO_flockfile (stderr);
+
+			    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+			    ((_IO_FILE *) stderr)->_flags2
+			      |= _IO_FLAGS2_NOTCANCEL;
+
+			    __fxprintf (NULL, "%s", buf);
+
+			    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+			    _IO_funlockfile (stderr);
+
+			    free (buf);
+			  }
+#else
+			fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+				 argv[0], pfound->name);
+#endif
+		      }
+
+		    d->__nextchar += strlen (d->__nextchar);
+		    return '?';
+		  }
+	      }
+	    else if (pfound->has_arg == 1)
+	      {
+		if (d->optind < argc)
+		  d->optarg = argv[d->optind++];
+		else
+		  {
+		    if (print_errors)
+		      {
+#if defined _LIBC && defined USE_IN_LIBIO
+			char *buf;
+
+			if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+					argv[0], argv[d->optind - 1]) >= 0)
+			  {
+			    _IO_flockfile (stderr);
+
+			    int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+			    ((_IO_FILE *) stderr)->_flags2
+			      |= _IO_FLAGS2_NOTCANCEL;
+
+			    __fxprintf (NULL, "%s", buf);
+
+			    ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+			    _IO_funlockfile (stderr);
+
+			    free (buf);
+			  }
+#else
+			fprintf (stderr,
+				 _("%s: option `%s' requires an argument\n"),
+				 argv[0], argv[d->optind - 1]);
+#endif
+		      }
+		    d->__nextchar += strlen (d->__nextchar);
+		    return optstring[0] == ':' ? ':' : '?';
+		  }
+	      }
+	    d->__nextchar += strlen (d->__nextchar);
+	    if (longind != NULL)
+	      *longind = option_index;
+	    if (pfound->flag)
+	      {
+		*(pfound->flag) = pfound->val;
+		return 0;
+	      }
+	    return pfound->val;
+	  }
+	  d->__nextchar = NULL;
+	  return 'W';	/* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+	if (temp[2] == ':')
+	  {
+	    /* This is an option that accepts an argument optionally.  */
+	    if (*d->__nextchar != '\0')
+	      {
+		d->optarg = d->__nextchar;
+		d->optind++;
+	      }
+	    else
+	      d->optarg = NULL;
+	    d->__nextchar = NULL;
+	  }
+	else
+	  {
+	    /* This is an option that requires an argument.  */
+	    if (*d->__nextchar != '\0')
+	      {
+		d->optarg = d->__nextchar;
+		/* If we end this ARGV-element by taking the rest as an arg,
+		   we must advance to the next element now.  */
+		d->optind++;
+	      }
+	    else if (d->optind == argc)
+	      {
+		if (print_errors)
+		  {
+		    /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+		    char *buf;
+
+		    if (__asprintf (&buf, _("\
+%s: option requires an argument -- %c\n"),
+				    argv[0], c) >= 0)
+		      {
+			_IO_flockfile (stderr);
+
+			int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+			((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+			__fxprintf (NULL, "%s", buf);
+
+			((_IO_FILE *) stderr)->_flags2 = old_flags2;
+			_IO_funlockfile (stderr);
+
+			free (buf);
+		      }
+#else
+		    fprintf (stderr,
+			     _("%s: option requires an argument -- %c\n"),
+			     argv[0], c);
+#endif
+		  }
+		d->optopt = c;
+		if (optstring[0] == ':')
+		  c = ':';
+		else
+		  c = '?';
+	      }
+	    else
+	      /* We already incremented `optind' once;
+		 increment it again when taking next ARGV-elt as argument.  */
+	      d->optarg = argv[d->optind++];
+	    d->__nextchar = NULL;
+	  }
+      }
+    return c;
+  }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+		  const struct option *longopts, int *longind,
+		  int long_only, int posixly_correct)
+{
+  int result;
+
+  getopt_data.optind = optind;
+  getopt_data.opterr = opterr;
+
+  result = _getopt_internal_r (argc, argv, optstring, longopts, longind,
+			       long_only, posixly_correct, &getopt_data);
+
+  optind = getopt_data.optind;
+  optarg = getopt_data.optarg;
+  optopt = getopt_data.optopt;
+
+  return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+   Standalone applications get a POSIX-compliant getopt.  */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+  return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0,
+			   POSIXLY_CORRECT);
+}
+
+
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+	break;
+
+      switch (c)
+	{
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+	  if (digit_optind != 0 && digit_optind != this_option_optind)
+	    printf ("digits occur in two different argv-elements.\n");
+	  digit_optind = this_option_optind;
+	  printf ("option %c\n", c);
+	  break;
+
+	case 'a':
+	  printf ("option a\n");
+	  break;
+
+	case 'b':
+	  printf ("option b\n");
+	  break;
+
+	case 'c':
+	  printf ("option c with value `%s'\n", optarg);
+	  break;
+
+	case '?':
+	  break;
+
+	default:
+	  printf ("?? getopt returned character code 0%o ??\n", c);
+	}
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+	printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */

+ 226 - 0
xz.mod/xz/lib/getopt.in.h

@@ -0,0 +1,226 @@
+/* Declarations for getopt.
+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+   identifier that prefixes the external functions and variables
+   defined in this header.  When this happens, include the
+   headers that might declare getopt so that they will not cause
+   confusion if included after this file.  Then systematically rename
+   identifiers so that they do not collide with the system functions
+   and variables.  Renaming avoids problems with some compilers and
+   linkers.  */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+   getopt_long_only; they declare "char **argv".  libc uses prototypes
+   with "char *const *argv" that are incorrect because getopt_long and
+   getopt_long_only can permute argv; this is required for backward
+   compatibility (e.g., for LSB 2.0.1).
+
+   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+   but it caused redefinition warnings if both unistd.h and getopt.h were
+   included, since unistd.h includes getopt.h having previously defined
+   __need_getopt.
+
+   The only place where __getopt_argv_const is used is in definitions
+   of getopt_long and getopt_long_only below, but these are visible
+   only if __need_getopt is not defined, so it is quite safe to rewrite
+   the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+#  define __getopt_argv_const /* empty */
+# else
+#  define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+#  define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+#  define __THROW	throw ()
+# else
+#  define __THROW
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument		(or 0) if the option does not take an argument,
+   required_argument	(or 1) if the option requires an argument,
+   optional_argument	(or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+  const char *name;
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument		0
+# define required_argument	1
+# define optional_argument	2
+#endif	/* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `-', then non-option arguments are treated as
+   arguments to the option '\1'.  This behavior is specific to the GNU
+   `getopt'.  If OPTS begins with `+', or POSIXLY_CORRECT is set in
+   the environment, then do not permute arguments.  */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+       __THROW;
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+			const char *__shortopts,
+		        const struct option *__longopts, int *__longind)
+       __THROW;
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind)
+       __THROW;
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */

+ 171 - 0
xz.mod/xz/lib/getopt1.c

@@ -0,0 +1,171 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef	NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+	     const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+			   opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+		const struct option *long_options, int *opt_index,
+		struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+			     0, 0, d);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+		  const char *options,
+		  const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+			   opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+		     const struct option *long_options, int *opt_index,
+		     struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+			     1, 0, d);
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+	{"add", 1, 0, 0},
+	{"append", 0, 0, 0},
+	{"delete", 1, 0, 0},
+	{"verbose", 0, 0, 0},
+	{"create", 0, 0, 0},
+	{"file", 1, 0, 0},
+	{0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+		       long_options, &option_index);
+      if (c == -1)
+	break;
+
+      switch (c)
+	{
+	case 0:
+	  printf ("option %s", long_options[option_index].name);
+	  if (optarg)
+	    printf (" with arg %s", optarg);
+	  printf ("\n");
+	  break;
+
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+	  if (digit_optind != 0 && digit_optind != this_option_optind)
+	    printf ("digits occur in two different argv-elements.\n");
+	  digit_optind = this_option_optind;
+	  printf ("option %c\n", c);
+	  break;
+
+	case 'a':
+	  printf ("option a\n");
+	  break;
+
+	case 'b':
+	  printf ("option b\n");
+	  break;
+
+	case 'c':
+	  printf ("option c with value `%s'\n", optarg);
+	  break;
+
+	case 'd':
+	  printf ("option d with value `%s'\n", optarg);
+	  break;
+
+	case '?':
+	  break;
+
+	default:
+	  printf ("?? getopt returned character code 0%o ??\n", c);
+	}
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+	printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */

+ 131 - 0
xz.mod/xz/lib/getopt_int.h

@@ -0,0 +1,131 @@
+/* Internal declarations for getopt.
+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H	1
+
+extern int _getopt_internal (int ___argc, char **___argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind,
+			     int __long_only, int __posixly_correct);
+
+
+/* Reentrant versions which can handle parsing multiple argument
+   vectors at the same time.  */
+
+/* Data type for reentrant functions.  */
+struct _getopt_data
+{
+  /* These have exactly the same meaning as the corresponding global
+     variables, except that they are used for the reentrant
+     versions of getopt.  */
+  int optind;
+  int opterr;
+  int optopt;
+  char *optarg;
+
+  /* Internal members.  */
+
+  /* True if the internal members have been initialized.  */
+  int __initialized;
+
+  /* The next char to be scanned in the option-element
+     in which the last option character we returned was found.
+     This allows us to pick up the scan where we left off.
+
+     If this is zero, or a null string, it means resume the scan
+     by advancing to the next ARGV-element.  */
+  char *__nextchar;
+
+  /* Describe how to deal with options that follow non-option ARGV-elements.
+
+     If the caller did not specify anything,
+     the default is REQUIRE_ORDER if the environment variable
+     POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+     REQUIRE_ORDER means don't recognize them as options;
+     stop option processing when the first non-option is seen.
+     This is what Unix does.
+     This mode of operation is selected by either setting the environment
+     variable POSIXLY_CORRECT, or using `+' as the first character
+     of the list of option characters, or by calling getopt.
+
+     PERMUTE is the default.  We permute the contents of ARGV as we
+     scan, so that eventually all the non-options are at the end.
+     This allows options to be given in any order, even with programs
+     that were not written to expect this.
+
+     RETURN_IN_ORDER is an option available to programs that were
+     written to expect options and other ARGV-elements in any order
+     and that care about the ordering of the two.  We describe each
+     non-option ARGV-element as if it were the argument of an option
+     with character code 1.  Using `-' as the first character of the
+     list of option characters selects this mode of operation.
+
+     The special argument `--' forces an end of option-scanning regardless
+     of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+     `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+  enum
+    {
+      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+    } __ordering;
+
+  /* If the POSIXLY_CORRECT environment variable is set
+     or getopt was called.  */
+  int __posixly_correct;
+
+
+  /* Handle permutation of arguments.  */
+
+  /* Describe the part of ARGV that contains non-options that have
+     been skipped.  `first_nonopt' is the index in ARGV of the first
+     of them; `last_nonopt' is the index after the last of them.  */
+
+  int __first_nonopt;
+  int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  int __nonoption_flags_max_len;
+  int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+   default values and to clear the initialization flag.  */
+#define _GETOPT_DATA_INITIALIZER	{ 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+			       const char *__shortopts,
+			       const struct option *__longopts, int *__longind,
+			       int __long_only, int __posixly_correct,
+			       struct _getopt_data *__data);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+			   const char *__shortopts,
+			   const struct option *__longopts, int *__longind,
+			   struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+				const char *__shortopts,
+				const struct option *__longopts,
+				int *__longind,
+				struct _getopt_data *__data);
+
+#endif /* getopt_int.h */

+ 39 - 0
xz.mod/xz/m4/.gitignore

@@ -0,0 +1,39 @@
+codeset.m4
+extern-inline.m4
+fcntl-o.m4
+gettext.m4
+glibc2.m4
+glibc21.m4
+host-cpu-c-abi.m4
+iconv.m4
+intdiv0.m4
+intl.m4
+intldir.m4
+intlmacosx.m4
+intmax.m4
+inttypes-pri.m4
+inttypes_h.m4
+lcmessage.m4
+lib-ld.m4
+lib-link.m4
+lib-prefix.m4
+libtool.m4
+lock.m4
+longdouble.m4
+longlong.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+lt~obsolete.m4
+nls.m4
+po.m4
+printf-posix.m4
+progtest.m4
+size_max.m4
+stdint_h.m4
+threadlib.m4
+uintmax_t.m4
+ulonglong.m4
+wchar_t.m4
+wint_t.m4
+xsize.m4

+ 85 - 0
xz.mod/xz/m4/ax_check_capsicum.m4

@@ -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 <[email protected]>
+#
+#   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])

+ 507 - 0
xz.mod/xz/m4/ax_pthread.m4

@@ -0,0 +1,507 @@
+# ===========================================================================
+#        https://www.gnu.org/software/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also to link with them as well. For example, you might link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threaded programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#     LIBS="$PTHREAD_LIBS $LIBS"
+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#     CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
+#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
+#   PTHREAD_CFLAGS.
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+#   Updated for Autoconf 2.68 by Daniel Richard G.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <[email protected]>
+#   Copyright (c) 2011 Daniel Richard G. <[email protected]>
+#   Copyright (c) 2019 Marc Stevens <[email protected]>
+#
+#   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
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 27
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on Tru64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
+        AC_MSG_RESULT([$ax_pthread_ok])
+        if test "x$ax_pthread_ok" = "xno"; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try. Items with a "," contain both
+# C compiler flags (before ",") and linker flags (after ","). Other items
+# starting with a "-" are C compiler flags, and remaining items are
+# library names, except for "none" which indicates that we try without
+# any flags at all, and "pthread-config" which is a program returning
+# the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+            [
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+            ],
+            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+        ;;
+
+        solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
+
+        ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags"
+        ;;
+esac
+
+# Are we compiling with Clang?
+
+AC_CACHE_CHECK([whether $CC is Clang],
+    [ax_cv_PTHREAD_CLANG],
+    [ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+            ],
+            [ax_cv_PTHREAD_CLANG=yes])
+     fi
+    ])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+
+# 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)
+                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 $ax_pthread_try_flag])
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
+                ;;
+
+                pthread-config)
+                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
+                ;;
+        esac
+
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
+                        static void *some_global = NULL;
+                        static void routine(void *a)
+                          {
+                             /* To avoid any unused-parameter or
+                                unused-but-set-parameter warning.  */
+                             some_global = a;
+                          }
+                        static void *start_routine(void *a) { return a; }],
+                       [pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */])],
+            [ax_pthread_ok=yes],
+            [])
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        AC_MSG_RESULT([$ax_pthread_ok])
+        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                    [ac_link="$ax_pthread_2step_ac_link"
+                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                         [break])
+                    ])
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+            ])
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+
+
+# Various other checks:
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        AC_CACHE_CHECK([for joinable pthread attribute],
+            [ax_cv_PTHREAD_JOINABLE_ATTR],
+            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
+                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+                                [])
+             done
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
+                                  [Define to necessary symbol if this constant
+                                   uses a non-standard name on your system.])
+               ax_pthread_joinable_attr_defined=yes
+              ])
+
+        AC_CACHE_CHECK([whether more special flags are required for pthreads],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"],
+              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes])
+
+        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+            [ax_cv_PTHREAD_PRIO_INHERIT],
+            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+                                             [[int i = PTHREAD_PRIO_INHERIT;
+                                               return i;]])],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               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
+              ])
+
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
+
+        # More AIX lossage: compile with *_r variant
+        if test "x$GCC" != "xyes"; then
+            case $host_os in
+                aix*)
+                AS_CASE(["x/$CC"],
+                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+                    [#handle absolute path differently from PATH based program lookup
+                     AS_CASE(["x$CC"],
+                         [x/*],
+                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+                ;;
+            esac
+        fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test "x$ax_pthread_ok" = "xyes"; then
+        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
+        :
+else
+        ax_pthread_ok=no
+        $2
+fi
+AC_LANG_POP
+])dnl AX_PTHREAD

+ 71 - 0
xz.mod/xz/m4/getopt.m4

@@ -0,0 +1,71 @@
+# getopt.m4 serial 14 (modified version)
+dnl Copyright (C) 2002-2006, 2008 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.
+
+# The getopt module assume you want GNU getopt, with getopt_long etc,
+# rather than vanilla POSIX getopt.  This means your code should
+# always include <getopt.h> for the getopt prototypes.
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+[
+  AC_LIBOBJ([getopt])
+  AC_LIBOBJ([getopt1])
+  gl_GETOPT_SUBSTITUTE_HEADER
+])
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+  GETOPT_H=getopt.h
+  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+    [Define to rpl_ if the getopt replacement functions and variables
+     should be used.])
+  AC_SUBST([GETOPT_H])
+])
+
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+  fi
+
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_FUNCS([getopt_long], [], [GETOPT_H=getopt.h])
+  fi
+
+  dnl BSD getopt_long uses a way to reset option processing, that is different
+  dnl from GNU and Solaris (which copied the GNU behavior). We support both
+  dnl GNU and BSD style resetting of getopt_long(), so there's no need to use
+  dnl GNU getopt_long() on BSD due to different resetting style.
+  dnl
+  dnl With getopt_long(), some BSD versions have a bug in handling optional
+  dnl arguments. This bug appears only if the environment variable
+  dnl POSIXLY_CORRECT has been set, so it shouldn't be too bad in most
+  dnl cases; probably most don't have that variable set. But if we actually
+  dnl hit this bug, it is a real problem due to our heavy use of optional
+  dnl arguments.
+  dnl
+  dnl According to CVS logs, the bug was introduced in OpenBSD in 2003-09-22
+  dnl and copied to FreeBSD in 2004-02-24. It was fixed in both in 2006-09-22,
+  dnl so the affected versions shouldn't be popular anymore anyway. NetBSD
+  dnl never had this bug. TODO: What about Darwin and others?
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_DECL([optreset],
+      [AC_DEFINE([HAVE_OPTRESET], 1,
+        [Define to 1 if getopt.h declares extern int optreset.])],
+      [], [#include <getopt.h>])
+  fi
+
+  dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+  dnl option string (as of 2005-05-05). We don't use that feature, so this
+  dnl is not a problem for us. Thus, the respective test was removed here.
+])
+
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+
+AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])

+ 63 - 0
xz.mod/xz/m4/posix-shell.m4

@@ -0,0 +1,63 @@
+# Find a POSIX-conforming shell.
+
+# Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+# If a POSIX-conforming shell can be found, set POSIX_SHELL and
+# PREFERABLY_POSIX_SHELL to it.  If not, set POSIX_SHELL to the
+# empty string and PREFERABLY_POSIX_SHELL to '/bin/sh'.
+
+AC_DEFUN([gl_POSIX_SHELL],
+[
+  AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell],
+    [gl_test_posix_shell_script='
+       func_return () {
+	 (exit [$]1)
+       }
+       func_success () {
+	 func_return 0
+       }
+       func_failure () {
+	 func_return 1
+       }
+       func_ret_success () {
+	 return 0
+       }
+       func_ret_failure () {
+	 return 1
+       }
+       subshell_umask_sanity () {
+	 (umask 22; (umask 0); test $(umask) -eq 22)
+       }
+       test "[$](echo foo)" = foo &&
+       func_success &&
+       ! func_failure &&
+       func_ret_success &&
+       ! func_ret_failure &&
+       (set x && func_ret_success y && test x = "[$]1") &&
+       subshell_umask_sanity
+     '
+     for gl_cv_posix_shell in \
+	 "$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do
+       case $gl_cv_posix_shell in
+         /*)
+	   "$gl_cv_posix_shell" -c "$gl_test_posix_shell_script" 2>/dev/null \
+	     && break;;
+       esac
+     done])
+
+  if test "$gl_cv_posix_shell" != no; then
+    POSIX_SHELL=$gl_cv_posix_shell
+    PREFERABLY_POSIX_SHELL=$POSIX_SHELL
+  else
+    POSIX_SHELL=
+    PREFERABLY_POSIX_SHELL=/bin/sh
+  fi
+  AC_SUBST([POSIX_SHELL])
+  AC_SUBST([PREFERABLY_POSIX_SHELL])
+])

+ 22 - 0
xz.mod/xz/m4/tuklib_common.m4

@@ -0,0 +1,22 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_COMMON
+#
+# DESCRIPTION
+#
+#   Common checks for tuklib.
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_COMMON], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC_C99])
+AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])dnl

+ 175 - 0
xz.mod/xz/m4/tuklib_cpucores.m4

@@ -0,0 +1,175 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_CPUCORES
+#
+# DESCRIPTION
+#
+#   Check how to find out the number of available CPU cores in the system.
+#   This information is used by tuklib_cpucores.c.
+#
+#   Supported methods:
+#     - GetSystemInfo(): Windows (including Cygwin)
+#     - sched_getaffinity(): glibc (GNU/Linux, GNU/kFreeBSD)
+#     - cpuset_getaffinity(): FreeBSD
+#     - sysctl(): BSDs, OS/2
+#     - sysconf(): GNU/Linux, Solaris, Tru64, IRIX, AIX, QNX, Cygwin (but
+#       GetSystemInfo() is used on Cygwin)
+#     - pstat_getdynamic(): HP-UX
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_CPUCORES], [
+AC_REQUIRE([TUKLIB_COMMON])
+
+# sys/param.h might be needed by sys/sysctl.h.
+AC_CHECK_HEADERS([sys/param.h])
+
+AC_CACHE_CHECK([how to detect the number of available CPU cores],
+	[tuklib_cv_cpucores_method], [
+
+# Maybe checking $host_os would be enough but this matches what
+# tuklib_cpucores.c does.
+#
+# NOTE: IRIX has a compiler that doesn't error out with #error, so use
+# a non-compilable text instead of #error to generate an error.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#if defined(_WIN32) || defined(__CYGWIN__)
+int main(void) { return 0; }
+#else
+compile error
+#endif
+]])], [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
+# 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([[
+#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_cv_cpucores_method=cpuset], [
+
+# 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.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#ifdef __QNX__
+compile error
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#	include <sys/param.h>
+#endif
+#include <sys/sysctl.h>
+int
+main(void)
+{
+	int name[2] = { CTL_HW, HW_NCPU };
+	int cpus;
+	size_t cpus_size = sizeof(cpus);
+	sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
+	return 0;
+}
+]])], [tuklib_cv_cpucores_method=sysctl], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#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_cv_cpucores_method=sysconf], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#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_cv_cpucores_method=pstat_getdynamic], [
+
+	tuklib_cv_cpucores_method=unknown
+])])])])])])])
+
+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)
+		AC_DEFINE([TUKLIB_CPUCORES_CPUSET], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with cpuset(2).])
+		;;
+	sysctl)
+		AC_DEFINE([TUKLIB_CPUCORES_SYSCTL], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with sysctl().])
+		;;
+	sysconf)
+		AC_DEFINE([TUKLIB_CPUCORES_SYSCONF], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with sysconf(_SC_NPROCESSORS_ONLN)
+			or sysconf(_SC_NPROC_ONLN).])
+		;;
+	pstat_getdynamic)
+		AC_DEFINE([TUKLIB_CPUCORES_PSTAT_GETDYNAMIC], [1],
+			[Define to 1 if the number of available CPU cores
+			can be detected with pstat_getdynamic().])
+		;;
+esac
+])dnl

+ 131 - 0
xz.mod/xz/m4/tuklib_integer.m4

@@ -0,0 +1,131 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_INTEGER
+#
+# DESCRIPTION
+#
+#   Checks for tuklib_integer.h:
+#     - Endianness
+#     - Does the compiler or the operating system provide byte swapping macros
+#     - Does the hardware support fast unaligned access to 16-bit
+#       and 32-bit integers
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_INTEGER], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_REQUIRE([AC_C_BIGENDIAN])
+
+AC_MSG_CHECKING([if __builtin_bswap16/32/64 are supported])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
+			[[__builtin_bswap16(1);
+			__builtin_bswap32(1);
+			__builtin_bswap64(1);]])],
+[
+	AC_DEFINE([HAVE___BUILTIN_BSWAPXX], [1],
+		[Define to 1 if the GNU C extensions
+		__builtin_bswap16/32/64 are supported.])
+	AC_MSG_RESULT([yes])
+], [
+	AC_MSG_RESULT([no])
+
+	# Look for other byteswapping methods.
+	AC_CHECK_HEADERS([byteswap.h sys/endian.h sys/byteorder.h], [break])
+
+	# Even if we have byteswap.h we may lack the specific macros/functions.
+	if test x$ac_cv_header_byteswap_h = xyes ; then
+		m4_foreach([FUNC], [bswap_16,bswap_32,bswap_64], [
+			AC_MSG_CHECKING([if FUNC is available])
+			AC_LINK_IFELSE([AC_LANG_SOURCE([
+#include <byteswap.h>
+int
+main(void)
+{
+	FUNC[](42);
+	return 0;
+}
+			])], [
+				AC_DEFINE(HAVE_[]m4_toupper(FUNC), [1],
+					[Define to 1 if] FUNC [is available.])
+				AC_MSG_RESULT([yes])
+			], [AC_MSG_RESULT([no])])
+
+		])dnl
+	fi
+])
+
+AC_MSG_CHECKING([if unaligned memory access should be used])
+AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access],
+		[Enable if the system supports *fast* unaligned memory access
+		with 16-bit and 32-bit integers. By default, this is enabled
+		only on x86, x86_64, big endian PowerPC,
+		and some ARM systems.]),
+	[], [enable_unaligned_access=auto])
+if test "x$enable_unaligned_access" = xauto ; then
+	# TODO: There may be other architectures, on which unaligned access
+	# is OK.
+	case $host_cpu in
+		i?86|x86_64|powerpc|powerpc64)
+			enable_unaligned_access=yes
+			;;
+		arm*|aarch64*)
+			# On 32-bit and 64-bit ARM, GCC and Clang
+			# #define __ARM_FEATURE_UNALIGNED if
+			# unaligned access is supported.
+			AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#ifndef __ARM_FEATURE_UNALIGNED
+compile error
+#endif
+int main(void) { return 0; }
+])], [enable_unaligned_access=yes], [enable_unaligned_access=no])
+			;;
+		*)
+			enable_unaligned_access=no
+			;;
+	esac
+fi
+if test "x$enable_unaligned_access" = xyes ; then
+	AC_DEFINE([TUKLIB_FAST_UNALIGNED_ACCESS], [1], [Define to 1 if
+		the system supports fast unaligned access to 16-bit and
+		32-bit integers.])
+	AC_MSG_RESULT([yes])
+else
+	AC_MSG_RESULT([no])
+fi
+
+AC_MSG_CHECKING([if unsafe type punning should be used])
+AC_ARG_ENABLE([unsafe-type-punning],
+	AS_HELP_STRING([--enable-unsafe-type-punning],
+		[This introduces strict aliasing violations and may result
+		in broken code. However, this might improve performance in
+		some cases, especially with old compilers (e.g.
+		GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7).]),
+	[], [enable_unsafe_type_punning=no])
+if test "x$enable_unsafe_type_punning" = xyes ; then
+	AC_DEFINE([TUKLIB_USE_UNSAFE_TYPE_PUNNING], [1], [Define to 1 to use
+		unsafe type punning, e.g. char *x = ...; *(int *)x = 123;
+		which violates strict aliasing rules and thus is
+		undefined behavior and might result in broken code.])
+	AC_MSG_RESULT([yes])
+else
+	AC_MSG_RESULT([no])
+fi
+
+AC_MSG_CHECKING([if __builtin_assume_aligned is supported])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_assume_aligned("", 1);]])],
+	[
+		AC_DEFINE([HAVE___BUILTIN_ASSUME_ALIGNED], [1],
+			[Define to 1 if the GNU C extension
+			__builtin_assume_aligned is supported.])
+		AC_MSG_RESULT([yes])
+	], [
+		AC_MSG_RESULT([no])
+	])
+])dnl

+ 30 - 0
xz.mod/xz/m4/tuklib_mbstr.m4

@@ -0,0 +1,30 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_MBSTR
+#
+# DESCRIPTION
+#
+#   Check if multibyte and wide character functionality is available
+#   for use by tuklib_mbstr_* functions. If not enough multibyte string
+#   support is available in the C library, the functions keep working
+#   with the assumption that all strings are a in single-byte character
+#   set without combining characters, e.g. US-ASCII or ISO-8859-*.
+#
+#   This .m4 file and tuklib_mbstr.h are common to all tuklib_mbstr_*
+#   functions, but each function is put into a separate .c file so
+#   that it is possible to pick only what is strictly needed.
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_MBSTR], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_FUNC_MBRTOWC
+AC_CHECK_FUNCS([wcwidth])
+])dnl

+ 211 - 0
xz.mod/xz/m4/tuklib_physmem.m4

@@ -0,0 +1,211 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_PHYSMEM
+#
+# DESCRIPTION
+#
+#   Check how to get the amount of physical memory.
+#   This information is used in tuklib_physmem.c.
+#
+#   Supported methods:
+#
+#     - Windows (including Cygwin), OS/2, DJGPP (DOS), OpenVMS, AROS,
+#       and QNX have operating-system specific functions.
+#
+#     - AIX has _system_configuration.physmem.
+#
+#     - sysconf() works on GNU/Linux and Solaris, and possibly on
+#       some BSDs.
+#
+#     - BSDs use sysctl().
+#
+#     - Tru64 uses getsysinfo().
+#
+#     - HP-UX uses pstat_getstatic().
+#
+#     - IRIX has setinvent_r(), getinvent_r(), and endinvent_r().
+#
+#     - sysinfo() works on Linux/dietlibc and probably on other Linux
+#       systems whose libc may lack sysconf().
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_PHYSMEM], [
+AC_REQUIRE([TUKLIB_COMMON])
+
+# sys/param.h might be needed by sys/sysctl.h.
+AC_CHECK_HEADERS([sys/param.h])
+
+AC_CACHE_CHECK([how to detect the amount of physical memory],
+	[tuklib_cv_physmem_method], [
+
+# Maybe checking $host_os would be enough but this matches what
+# tuklib_physmem.c does.
+#
+# NOTE: IRIX has a compiler that doesn't error out with #error, so use
+# a non-compilable text instead of #error to generate an error.
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#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_cv_physmem_method=special], [
+
+# 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).
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/systemcfg.h>
+
+int
+main(void)
+{
+	(void)_system_configuration.physmem;
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=aix], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+int
+main(void)
+{
+	long i;
+	i = sysconf(_SC_PAGESIZE);
+	i = sysconf(_SC_PHYS_PAGES);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=sysconf], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#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_cv_physmem_method=sysctl], [
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/sysinfo.h>
+#include <machine/hal_sysinfo.h>
+
+int
+main(void)
+{
+	int memkb;
+	int start = 0;
+	getsysinfo(GSI_PHYSMEM, (caddr_t)&memkb, sizeof(memkb), &start);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=getsysinfo],[
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#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_cv_physmem_method=pstat_getstatic],[
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <invent.h>
+int
+main(void)
+{
+	inv_state_t *st = NULL;
+	setinvent_r(&st);
+	getinvent_r(st);
+	endinvent_r(st);
+	return 0;
+}
+]])], [tuklib_cv_physmem_method=getinvent_r], [
+
+# This version of sysinfo() is Linux-specific. Some non-Linux systems have
+# different sysinfo() so we must check $host_os.
+case $host_os in
+	linux*)
+		AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/sysinfo.h>
+int
+main(void)
+{
+	struct sysinfo si;
+	sysinfo(&si);
+	return 0;
+}
+		]])], [
+			tuklib_cv_physmem_method=sysinfo
+		], [
+			tuklib_cv_physmem_method=unknown
+		])
+		;;
+	*)
+		tuklib_cv_physmem_method=unknown
+		;;
+esac
+])])])])])])])])
+
+case $tuklib_cv_physmem_method in
+	aix)
+		AC_DEFINE([TUKLIB_PHYSMEM_AIX], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with _system_configuration.physmem.])
+		;;
+	sysconf)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSCONF], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with sysconf(_SC_PAGESIZE) and
+			sysconf(_SC_PHYS_PAGES).])
+		;;
+	sysctl)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSCTL], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with sysctl().])
+		;;
+	getsysinfo)
+		AC_DEFINE([TUKLIB_PHYSMEM_GETSYSINFO], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with getsysinfo().])
+		;;
+	pstat_getstatic)
+		AC_DEFINE([TUKLIB_PHYSMEM_PSTAT_GETSTATIC], [1],
+			[Define to 1 if the amount of physical memory can
+			be detected with pstat_getstatic().])
+		;;
+	getinvent_r)
+		AC_DEFINE([TUKLIB_PHYSMEM_GETINVENT_R], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with getinvent_r().])
+		;;
+	sysinfo)
+		AC_DEFINE([TUKLIB_PHYSMEM_SYSINFO], [1],
+			[Define to 1 if the amount of physical memory
+			can be detected with Linux sysinfo().])
+		;;
+esac
+])dnl

+ 25 - 0
xz.mod/xz/m4/tuklib_progname.m4

@@ -0,0 +1,25 @@
+#
+# SYNOPSIS
+#
+#   TUKLIB_PROGNAME
+#
+# DESCRIPTION
+#
+#   Put argv[0] into a global variable progname. On DOS-like systems,
+#   modify it so that it looks nice (no full path or .exe suffix).
+#
+#   This .m4 file is needed allow this module to use glibc's
+#   program_invocation_name.
+#
+# COPYING
+#
+#   Author: Lasse Collin
+#
+#   This file has been put into the public domain.
+#   You can do whatever you want with this file.
+#
+
+AC_DEFUN_ONCE([TUKLIB_PROGNAME], [
+AC_REQUIRE([TUKLIB_COMMON])
+AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
+])dnl

+ 77 - 0
xz.mod/xz/m4/visibility.m4

@@ -0,0 +1,77 @@
+# visibility.m4 serial 6
+dnl Copyright (C) 2005, 2008, 2010-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl Mac OS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    dnl First, check whether -Werror can be added to the command line, or
+    dnl whether it leads to an error because of some other option that the
+    dnl user has put into $CC $CFLAGS $CPPFLAGS.
+    AC_CACHE_CHECK([whether the -Werror option is usable],
+      [gl_cv_cc_vis_werror],
+      [gl_save_CFLAGS="$CFLAGS"
+       CFLAGS="$CFLAGS -Werror"
+       AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[]], [[]])],
+         [gl_cv_cc_vis_werror=yes],
+         [gl_cv_cc_vis_werror=no])
+       CFLAGS="$gl_save_CFLAGS"
+      ])
+    dnl Now check whether visibility declarations are supported.
+    AC_CACHE_CHECK([for simple visibility declarations],
+      [gl_cv_cc_visibility],
+      [gl_save_CFLAGS="$CFLAGS"
+       CFLAGS="$CFLAGS -fvisibility=hidden"
+       dnl We use the option -Werror and a function dummyfunc, because on some
+       dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+       dnl "visibility attribute not supported in this configuration; ignored"
+       dnl at the first function definition in every compilation unit, and we
+       dnl don't want to use the option in this case.
+       if test $gl_cv_cc_vis_werror = yes; then
+         CFLAGS="$CFLAGS -Werror"
+       fi
+       AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+              extern __attribute__((__visibility__("default"))) int exportedvar;
+              extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+              extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+              void dummyfunc (void) {}
+            ]],
+            [[]])],
+         [gl_cv_cc_visibility=yes],
+         [gl_cv_cc_visibility=no])
+       CFLAGS="$gl_save_CFLAGS"
+      ])
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+  AC_SUBST([CFLAG_VISIBILITY])
+  AC_SUBST([HAVE_VISIBILITY])
+  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])

+ 113 - 0
xz.mod/xz/macosx/build.sh

@@ -0,0 +1,113 @@
+#!/bin/sh
+
+###############################################################################
+# Author: Anders F Björklund <[email protected]>
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+###############################################################################
+
+mkdir -p Root
+mkdir -p Resources
+
+# Abort immediately if something goes wrong.
+set -e
+
+GCC="gcc-4.2"
+SDK="/Developer/SDKs/MacOSX10.5.sdk"
+MDT="10.5"
+GTT=i686-apple-darwin9
+
+ARCHES1="-arch ppc -arch ppc64 -arch i386 -arch x86_64"
+ARCHES2="-arch ppc -arch i386"
+PKGFORMAT="10.5" # xar
+
+# avoid "unknown required load command: 0x80000022" from linking on Snow Leopard
+uname -r | grep ^1 >/dev/null && LDFLAGS="$LDFLAGS -Wl,-no_compact_linkedit"
+
+# Clean up if it was already configured.
+[ -f Makefile ] && make distclean
+
+# Build the regular fat program
+
+CC="$GCC" \
+CFLAGS="-O2 -g $ARCHES1 -isysroot $SDK -mmacosx-version-min=$MDT" \
+../configure --disable-dependency-tracking --disable-xzdec --disable-lzmadec $GTT
+
+make
+
+make check
+
+make DESTDIR=`pwd`/Root install
+
+make distclean
+
+# Build the size-optimized program
+
+CC="$GCC" \
+CFLAGS="-Os -g $ARCHES2 -isysroot $SDK -mmacosx-version-min=$MDT" \
+../configure --disable-dependency-tracking --disable-shared --disable-nls --disable-encoders --enable-small --disable-threads $GTT
+
+make -C src/liblzma
+make -C src/xzdec
+make -C src/xzdec DESTDIR=`pwd`/Root install
+
+cp -a ../extra Root/usr/local/share/doc/xz
+
+make distclean
+
+# Move development files to different package
+
+test -d liblzma && rm -r liblzma
+mkdir -p liblzma/usr/local
+
+mv Root/usr/local/include liblzma/usr/local
+mv Root/usr/local/lib liblzma/usr/local
+
+mkdir -p Root/usr/local/lib
+cp -p liblzma/usr/local/lib/liblzma.5.dylib Root/usr/local/lib
+mkdir -p liblzma/usr/local/share/doc/xz
+mv Root/usr/local/share/doc/xz/examples* liblzma/usr/local/share/doc/xz
+
+# Strip debugging symbols and make relocatable
+
+for bin in xz lzmainfo xzdec lzmadec; do
+    strip -S Root/usr/local/bin/$bin
+    install_name_tool -change /usr/local/lib/liblzma.5.dylib @executable_path/../lib/liblzma.5.dylib Root/usr/local/bin/$bin
+done
+
+for lib in liblzma.5.dylib; do
+    strip -S Root/usr/local/lib/$lib
+    install_name_tool -id @executable_path/../lib/liblzma.5.dylib Root/usr/local/lib/$lib
+done
+
+# Create tarball, but without the HFS+ attrib
+
+rmdir debug lib po src/liblzma/api src/liblzma src/lzmainfo src/scripts src/xz src/xzdec src tests
+
+( cd Root/usr/local; COPY_EXTENDED_ATTRIBUTES_DISABLE=true COPYFILE_DISABLE=true tar cvjf ../../../XZ.tbz * )
+( cd liblzma; COPY_EXTENDED_ATTRIBUTES_DISABLE=true COPYFILE_DISABLE=true tar cvjf ../liblzma.tbz ./usr/local )
+
+# Include documentation files for package
+
+cp -p ../README Resources/ReadMe.txt
+cp -p ../COPYING Resources/License.txt
+
+# Make an Installer.app package
+
+ID="org.tukaani.xz"
+VERSION=`cd ..; sh build-aux/version.sh`
+PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
+$PACKAGEMAKER -r Root/usr/local -l /usr/local -e Resources -i $ID -n $VERSION -t XZ -o XZ.pkg -g $PKGFORMAT --verbose
+$PACKAGEMAKER -r liblzma -w -k -i $ID.liblzma -n $VERSION -o liblzma.pkg -g $PKGFORMAT --verbose
+
+# Put the package in a disk image
+
+if [ "$PKGFORMAT" != "10.5" ]; then
+hdiutil create -fs HFS+ -format UDZO -quiet -srcfolder XZ.pkg -ov XZ.dmg
+hdiutil internet-enable -yes -quiet XZ.dmg
+fi
+
+echo
+echo "Build completed successfully."
+echo

+ 31 - 0
xz.mod/xz/po/.gitignore

@@ -0,0 +1,31 @@
+# autopoint
+Makefile.in.in
+Makevars.template
+Rules-quot
+boldquot.sed
[email protected]
[email protected]
+insert-header.sin
+quot.sed
+remove-potcdate.sin
+
+# configure
+Makefile.in
+Makefile
+POTFILES
+
+# intermediate files (make)
+stamp-poT
+xz.po
+xz.1po
+xz.2po
+*.new.po
+
+# make
+remove-potcdate.sed
+xz.mo
+stamp-po
+*.gmo
+
+# cached templates (make)
+xz.pot

+ 6 - 0
xz.mod/xz/po/LINGUAS

@@ -0,0 +1,6 @@
+cs
+de
+fr
+it
+pl
+vi

+ 46 - 0
xz.mod/xz/po/Makevars

@@ -0,0 +1,46 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER =
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS =
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
+
+# Although you may need slightly wider terminal than 80 chars, it is
+# much nicer to edit the output of --help when this is set.
+XGETTEXT_OPTIONS += --no-wrap
+MSGMERGE += --no-wrap

+ 13 - 0
xz.mod/xz/po/POTFILES.in

@@ -0,0 +1,13 @@
+# List of source files which contain translatable strings.
+src/xz/args.c
+src/xz/coder.c
+src/xz/file_io.c
+src/xz/hardware.c
+src/xz/list.c
+src/xz/main.c
+src/xz/message.c
+src/xz/options.c
+src/xz/signals.c
+src/xz/suffix.c
+src/xz/util.c
+src/common/tuklib_exit.c

+ 949 - 0
xz.mod/xz/po/cs.po

@@ -0,0 +1,949 @@
+# XZ Utils Czech translation
+# This file is put in the public domain.
+# Marek Černocký <[email protected]>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xz-utils\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2010-12-03 11:25+0100\n"
+"PO-Revision-Date: 2010-12-03 11:32+0100\n"
+"Last-Translator: Marek Černocký <[email protected]>\n"
+"Language-Team: Czech <[email protected]>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
+"X-Poedit-Language: Czech\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: src/xz/args.c:333
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s: Neznámý typ formátu souboru"
+
+#: src/xz/args.c:356 src/xz/args.c:364
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s: Neznámý typ kontroly integrity"
+
+#: src/xz/args.c:382
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr ""
+"Spolu s přepínači „--files“ nebo „--files0“ může být zadán pouze jeden soubor"
+
+#: src/xz/args.c:445
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "Proměnná prostředí %s obsahuje příliš mnoho argumentů"
+
+#: src/xz/coder.c:95
+msgid "Maximum number of filters is four"
+msgstr "Maximální počet filtrů je čtyři"
+
+#: src/xz/coder.c:108
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr "Omezení použitelné paměti je příliš malé pro dané nastavení filtru."
+
+#: src/xz/coder.c:129
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Použití přednastavení v režimu raw je nevhodné."
+
+#: src/xz/coder.c:131
+msgid "The exact options of the presets may vary between software versions."
+msgstr ""
+"Přesné volby u přednastavení se mohou lišit mezi různými verzemi softwaru."
+
+#: src/xz/coder.c:157
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Formát .lzma podporuje pouze filtr LZMA1"
+
+#: src/xz/coder.c:165
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "LZMA1 nelze použít s formátem .xz"
+
+#: src/xz/coder.c:182
+msgid "Unsupported filter chain or filter options"
+msgstr "Nepodporovaný omezující filtr nebo volby filtru"
+
+#: src/xz/coder.c:190
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "Dekomprimace bude vyžadovat %s MiB paměti."
+
+#: src/xz/coder.c:247
+#, c-format
+msgid ""
+"Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the "
+"memory usage limit of %s MiB"
+msgstr ""
+"Přizpůsobit velikost slovníku LZMA%c z %s MiB na %s MiB, tak aby nebylo "
+"překročeno omezení použitelné paměti %s MiB"
+
+#. 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:137
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s: Vypadá to, že soubor byl přesunut, proto nebude odstraněn"
+
+#: src/xz/file_io.c:144 src/xz/file_io.c:590
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s: Nelze odstranit: %s"
+
+#: src/xz/file_io.c:169
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s: Nelze nastavit vlastníka souboru: %s"
+
+#: src/xz/file_io.c:175
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s: Nelze nastavit skupinu souboru: %s"
+
+#: src/xz/file_io.c:194
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s: Nelze nastavit oprávnění souboru: %s"
+
+#: src/xz/file_io.c:337 src/xz/file_io.c:420
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s: Jedná se o symbolický odkaz, vynechává se"
+
+#: src/xz/file_io.c:455
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s: Jedná se o složku, vynechává se"
+
+#: src/xz/file_io.c:462
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s: Nejedná se o běžný soubor, vynechává se"
+
+#: src/xz/file_io.c:479
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s: Soubor má nastavený bit setuid nebo setgid, vynechává se"
+
+#: src/xz/file_io.c:486
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s: Soubor má nastavený bit sticky, vynechává se"
+
+#: src/xz/file_io.c:493
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s: Vstupní soubor má více než jeden pevný odkaz, vynechává se"
+
+#: src/xz/file_io.c:714
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Chyba při obnovení příznaku O_APPEND na standardní výstup: %s"
+
+#: src/xz/file_io.c:726
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s: Selhalo zavření souboru: %s"
+
+#: src/xz/file_io.c:762 src/xz/file_io.c:946
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr ""
+"%s: Selhalo nastavení pozice při pokusu o vytvoření souboru řídké matice: %s"
+
+#: src/xz/file_io.c:821
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s: Chyba čtení: %s"
+
+#: src/xz/file_io.c:844
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s: Chyba při posunu v rámci souboru: %s"
+
+#: src/xz/file_io.c:854
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s: Neočekávaný konec souboru"
+
+#: src/xz/file_io.c:904
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s: Chyba zápisu: %s"
+
+#: src/xz/hardware.c:100
+msgid "Disabled"
+msgstr "Vypnuto"
+
+#. TRANSLATORS: Test with "xz --info-memory" to see if
+#. the alignment looks nice.
+#: src/xz/hardware.c:119
+msgid "Total amount of physical memory (RAM): "
+msgstr "Celkové množství fyzické paměti (RAM):     "
+
+#: src/xz/hardware.c:121
+msgid "Memory usage limit for compression:    "
+msgstr "Omezení použitelné paměti pro komprimaci:  "
+
+#: src/xz/hardware.c:123
+msgid "Memory usage limit for decompression:  "
+msgstr "Omezení použitelné paměti pro dekomprimaci:"
+
+#. TRANSLATORS: Indicates that there is no integrity check.
+#. This string is used in tables, so the width must not
+#. exceed ten columns with a fixed-width font.
+#: src/xz/list.c:62
+msgid "None"
+msgstr "žádná"
+
+#. TRANSLATORS: Indicates that integrity check name is not known,
+#. but the Check ID is known (here 2). This and other "Unknown-N"
+#. strings are used in tables, so the width must not exceed ten
+#. columns with a fixed-width font. It's OK to omit the dash if
+#. you need space for one extra letter, but don't use spaces.
+#: src/xz/list.c:69
+msgid "Unknown-2"
+msgstr "neznámá-2"
+
+#: src/xz/list.c:70
+msgid "Unknown-3"
+msgstr "neznámá-3"
+
+#: src/xz/list.c:72
+msgid "Unknown-5"
+msgstr "neznámá-5"
+
+#: src/xz/list.c:73
+msgid "Unknown-6"
+msgstr "neznámá-6"
+
+#: src/xz/list.c:74
+msgid "Unknown-7"
+msgstr "neznámá-7"
+
+#: src/xz/list.c:75
+msgid "Unknown-8"
+msgstr "neznámá-8"
+
+#: src/xz/list.c:76
+msgid "Unknown-9"
+msgstr "neznámá-9"
+
+#: src/xz/list.c:78
+msgid "Unknown-11"
+msgstr "neznámá-11"
+
+#: src/xz/list.c:79
+msgid "Unknown-12"
+msgstr "neznámá-12"
+
+#: src/xz/list.c:80
+msgid "Unknown-13"
+msgstr "neznámá-13"
+
+#: src/xz/list.c:81
+msgid "Unknown-14"
+msgstr "neznámá-14"
+
+#: src/xz/list.c:82
+msgid "Unknown-15"
+msgstr "neznámá-15"
+
+#: src/xz/list.c:126
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s: Soubor je prázdný"
+
+#: src/xz/list.c:131
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s: Je příliš malý na to, aby to mohl být platný soubor .xz"
+
+#. 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:612
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr "Proud   Bloky      Komprim    Nekomprim  Poměr  Kontrl  Název souboru"
+
+#: src/xz/list.c:652
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Proudů:                  %s\n"
+
+#: src/xz/list.c:654
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Bloků:                   %s\n"
+
+#: src/xz/list.c:656
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Komprimovaná velikost:   %s\n"
+
+#: src/xz/list.c:659
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Nekomprimovaná velikost: %s\n"
+
+#: src/xz/list.c:662
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Poměr komprimace:        %s\n"
+
+#: src/xz/list.c:664
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Typ kontroly:            %s\n"
+
+#: src/xz/list.c:665
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Zarovnání proudu:        %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:693
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      "
+"UncompSize  Ratio  Check      Padding"
+msgstr ""
+"  Proudy:\n"
+"     Proud     Bloky     KomprPozice   NekomprPozice   KomprVelikost "
+"NekomprVelikost  Poměr  Kontrola   Zarovnání"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:748
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      "
+"UncompSize  Ratio  Check"
+msgstr ""
+"  Bloky:\n"
+"     Proud      Blok     KomprPozice   NekomprPozice    CelkVelikost "
+"NekomprVelikost  Poměr  Kontrola"
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:760
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "   KontrHod %*s Hlavič  Příznaky     KomprVel    PoužiPam  Filtry"
+
+#: src/xz/list.c:838 src/xz/list.c:1007
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Potřebná paměť:          %s MiB\n"
+
+#: src/xz/list.c:840 src/xz/list.c:1009
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Velikosti v hlavičkách:  %s\n"
+
+#: src/xz/list.c:841 src/xz/list.c:1010
+msgid "Yes"
+msgstr "Ano"
+
+#: src/xz/list.c:841 src/xz/list.c:1010
+msgid "No"
+msgstr "Ne"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:986
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s soubor\n"
+msgstr[1] "%s soubory\n"
+msgstr[2] "%s souborů\n"
+
+#: src/xz/list.c:999
+msgid "Totals:"
+msgstr "Celkem:"
+
+#: src/xz/list.c:1000
+#, c-format
+msgid "  Number of files:    %s\n"
+msgstr "  Počet souborů:           %s\n"
+
+#: src/xz/list.c:1072
+msgid "--list works only on .xz files (--format=xz or --format=auto)"
+msgstr "--list pracuje pouze se soubory .xz (--format=xz nebo --format=auto)"
+
+#: src/xz/list.c:1078
+msgid "--list does not support reading from standard input"
+msgstr "--list nepodporuje čtení ze standardního vstupu"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s: Chyba při čtení názvů souborů: %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s: Neočekávaný konec vstupu při čtení názvů souborů"
+
+#: src/xz/main.c:120
+#, c-format
+msgid ""
+"%s: Null character found when reading filenames; maybe you meant to use `--"
+"files0' instead of `--files'?"
+msgstr ""
+"%s: Byl nalezen nulový znak při čtení názvů souborů; nechtěli jste náhodou "
+"použít „--files0“ místo „--files“?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "Komprimace a dekomprimace s přepínačem --robot není zatím podporovaná."
+
+#: src/xz/main.c:231
+msgid ""
+"Cannot read data from standard input when reading filenames from standard "
+"input"
+msgstr ""
+"Ze standardního vstupu nelze číst data, když se ze standardního vstupu "
+"načítají názvy souborů"
+
+#: src/xz/message.c:792 src/xz/message.c:842
+msgid "Internal error (bug)"
+msgstr "Interní chyba"
+
+#: src/xz/message.c:799
+msgid "Cannot establish signal handlers"
+msgstr "Nelze ustanovit ovladač signálu"
+
+#: src/xz/message.c:808
+msgid "No integrity check; not verifying file integrity"
+msgstr "Žádná kontrola integrity; integrita souboru se nebude ověřovat"
+
+#: src/xz/message.c:811
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr ""
+"Nepodporovaný typ kontroly integrity; integrita souboru se nebude ověřovat"
+
+#: src/xz/message.c:818
+msgid "Memory usage limit reached"
+msgstr "Dosaženo omezení použitelné paměti"
+
+#: src/xz/message.c:821
+msgid "File format not recognized"
+msgstr "Formát souboru nebyl rozpoznán"
+
+#: src/xz/message.c:824
+msgid "Unsupported options"
+msgstr "Nepodporovaná volba"
+
+#: src/xz/message.c:827
+msgid "Compressed data is corrupt"
+msgstr "Komprimovaná data jsou poškozená"
+
+#: src/xz/message.c:830
+msgid "Unexpected end of input"
+msgstr "Neočekávaný konec vstupu"
+
+#: src/xz/message.c:881
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "Je vyžadováno %s MiB paměti. Limit je %s."
+
+#: src/xz/message.c:1048
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s: Omezující filtr: %s\n"
+
+#: src/xz/message.c:1058
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Zkuste „%s --help“ pro více informací"
+
+#: src/xz/message.c:1084
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Použití: %s [PŘEPÍNAČ]... [SOUBOR]...\n"
+"Komprimuje nebo dekomprimuje SOUBORy ve formátu xz.\n"
+"\n"
+
+#: src/xz/message.c:1091
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Povinné argumenty pro dlouhé přepínače jsou povinné rovněž pro krátké "
+"přepínače.\n"
+
+#: src/xz/message.c:1095
+msgid " Operation mode:\n"
+msgstr "Operační režim:\n"
+
+#: src/xz/message.c:1098
+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        provést komprimaci\n"
+" -d, --decompress      provést dekomprimaci\n"
+" -t, --test            testovat integritu komprimovaného souboru\n"
+" -l, --list            vypsat informace o souborech .xz"
+
+#: src/xz/message.c:1104
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+"Modifikátory operací:\n"
+
+#: src/xz/message.c:1107
+msgid ""
+"  -k, --keep          keep (don't delete) input files\n"
+"  -f, --force         force overwrite of output file and (de)compress links\n"
+"  -c, --stdout        write to standard output and don't delete input files"
+msgstr ""
+" -k, --keep            zachovat (nemazat) vstupní soubory\n"
+" -f, --force           vynutit přepis výstupního souboru a de/komprimovat "
+"odkazy\n"
+" -c, --stdout          zapisovat na standardní výstup a nemazat vstupní "
+"soubory"
+
+#: src/xz/message.c:1113
+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       nevytvářet při dekomprimaci soubory řídkých matic\n"
+" -S, --suffix=.PRIP    použít u komprimovaných souborů příponu „.PRIP“\n"
+"     --files[=SOUBOR]  číst názvy souborů, které se mají zpracovat, ze "
+"SOUBORu;\n"
+"                       pokud není SOUBOR zadán, čte se ze standardního "
+"vstupu;\n"
+"                       názvy souborů musí být zakončeny znakem nového řádku\n"
+"     --files0[=SOUBOR] stejné jako --files, ale použít k zakončování nulový "
+"znak"
+
+#: src/xz/message.c:1121
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+"Základní přepínače pro formát souboru a komprimaci:\n"
+
+#: src/xz/message.c:1123
+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=FORMÁT   formát souboru k zakódování nebo dekódování; možné\n"
+"                       hodnoty jsou „auto“ (výchozí), „xz“, „lzma“ a „raw“\n"
+" -C, --check=KONTROLA  typ kontroly integrity: „none“ (používejte s "
+"rozmyslem),\n"
+"                       „crc32“, „crc64“ (výchozí) nebo „sha256“"
+
+#: src/xz/message.c:1130
+msgid ""
+"  -0 ... -9           compression preset; default is 6; take compressor "
+"*and*\n"
+"                      decompressor memory usage into account before using "
+"7-9!"
+msgstr ""
+" -0 .. -9              přednastavení komprimace; výchozí je 6; než "
+"použijete\n"
+"                       hodnoty 7 – 9, vezměte do úvahy množství použité "
+"paměti"
+
+#: src/xz/message.c:1134
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU "
+"time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+" -e, --extreme         zkusit zlepšit poměr komprimace využitím více času\n"
+"                       procesoru; nemá vliv na paměťové nároky dekomprimace"
+
+#: src/xz/message.c:1139
+#, 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=LIMIT\n"
+"     --memlimit-decompress=LIMIT\n"
+" -M, --memlimit=LIMIT\n"
+"                       nastaví omezení použitelné paměti pro komprimaci,\n"
+"                       dekomprimaci nebo obojí; LIMIT je v bajtech, % z "
+"paměti\n"
+"                       RAM nebo 0 pro výchozí"
+
+#: src/xz/message.c:1146
+msgid ""
+"      --no-adjust     if compression settings exceed the memory usage "
+"limit,\n"
+"                      give an error instead of adjusting the settings "
+"downwards"
+msgstr ""
+"     --no-adjust       pokud nastavení komprimace přesáhne omezení "
+"použitelné\n"
+"                       paměti, předat chybu namísto snížení nastavení"
+
+#: src/xz/message.c:1152
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+"Vlastní omezující filtr pro komprimaci (alternativa k použití "
+"přednastavených):"
+
+#: src/xz/message.c:1161
+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[=VOLBY]       LZMA1 nebo LZMA2; VOLBY je čárkou oddělovaný seznam "
+"žádné\n"
+" --lzma2[=VOLBY]       nebo více následujících voleb (platné hodnoty; "
+"výchozí):\n"
+"                         preset=PŘE změnit volby na PŘEdnastavené (0 – 9"
+"[e])\n"
+"                         dict=POČ   velikost slovníku (4 KiB – 1536 MiB; 8 "
+"MiB)\n"
+"                         lc=POČ     počet kontextových bitů literálu (0 – 4; "
+"3)\n"
+"                         lp=POČ     počet pozičních bitů literálu (0 – 4; "
+"0)\n"
+"                         pb=POČ     počet pozičních bitů (0 – 4; 2)\n"
+"                         mode=REŽIM režim komprimace (fast, normal; normal)\n"
+"                         nice=NUM   příznivá délka shody (2 – 273; 64)\n"
+"                         mf=NÁZEV   hledání shod (hc3, hc4, bt2, bt3, bt4; "
+"bt4)\n"
+"                         depth=POČ  maximální hloubka prohledávání;\n"
+"                                    0 = automaticky (výchozí)"
+
+#: src/xz/message.c:1176
+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[=VOLBY]         Filtr x86 BCJ (32bitový a 64bitový)\n"
+" --powerpc[=VOLBY]     Filtr PowerPC BCJ (pouze big endian)\n"
+" --ia64[=VOLBY]        Filtr IA64 (Itanium) BCJ\n"
+" --arm[=VOLBY]         Filtr ARM BCJ (pouze little endian)\n"
+" --armthumb[=VOLBY]    Filtr ARM-Thumb BCJ (pouze little endian)\n"
+" --sparc[=VOLBY]       Filtr SPARC BCJ\n"
+"                       Platné volby pro všechny filtry BCJ:\n"
+"                         start=POČ  počáteční posun pro převody (výchozí=0)"
+
+#: src/xz/message.c:1188
+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[=VOLBY]       Filtr Delta; platné VOLBY (platné hodnoty; výchozí):\n"
+"                         dist=POČ   vzdálenost mezi bajty, které jsou "
+"odečítány\n"
+"                                    jeden od druhého (1 – 256; 1)"
+
+#: src/xz/message.c:1196
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Ostatní přepínače:\n"
+
+#: src/xz/message.c:1199
+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           potlačit varování; zadáním dvakrát, potlačíte i "
+"chyby\n"
+" -v, --verbose         podrobnější zprávy; zadáním dvakrát, budou ještě\n"
+"                       podrobnější"
+
+#: src/xz/message.c:1204
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr " -Q, --no-warn         způsobí, že varování neovlivní stav ukončení"
+
+#: src/xz/message.c:1206
+msgid ""
+"      --robot         use machine-parsable messages (useful for scripts)"
+msgstr ""
+"     --robot           použít strojově analyzovatelné zprávy (užitečné pro\n"
+"                       skripty)"
+
+#: src/xz/message.c:1209
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently "
+"active\n"
+"                      memory usage limits, and exit"
+msgstr ""
+"     --info-memory     zobrazit celkové množství paměti RAM a současné "
+"aktivní\n"
+"                       omezení použitelné paměti a skončit"
+
+#: src/xz/message.c:1212
+msgid ""
+"  -h, --help          display the short help (lists only the basic options)\n"
+"  -H, --long-help     display this long help and exit"
+msgstr ""
+" -h, --help            zobrazit krátkou nápovědu (vypíše jen základní "
+"přepínače)\n"
+" -H, --long-help       zobrazit tuto úplnou nápovědu a skončit"
+
+#: src/xz/message.c:1216
+msgid ""
+"  -h, --help          display this short help and exit\n"
+"  -H, --long-help     display the long help (lists also the advanced options)"
+msgstr ""
+" -h, --help            zobrazit tuto zkrácenou nápovědu a skončit\n"
+" -H, --long-help       zobrazit úplnou nápovědu (vypíše i pokročilé "
+"přepínače)"
+
+#: src/xz/message.c:1221
+msgid "  -V, --version       display the version number and exit"
+msgstr " -V, --version         zobrazit číslo verze a skončit"
+
+#: src/xz/message.c:1223
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Pokud SOUBOR není zadán nebo pokud je -, bude se číst ze standardního "
+"vstupu.\n"
+
+#. TRANSLATORS: This message indicates the bug reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the email or WWW
+#. address for translation bugs. Thanks.
+#: src/xz/message.c:1229
+#, c-format
+msgid "Report bugs to <%s> (in English or Finnish).\n"
+msgstr "Chyby hlaste na <%s> (v angličtině nebo finštině).\n"
+
+#: src/xz/message.c:1231
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Domovská stránka %s: <%s>\n"
+
+#: src/xz/options.c:86
+#, c-format
+msgid "%s: Options must be `name=value' pairs separated with commas"
+msgstr "%s: Volby musí být páry „název=hodnota“ oddělené čárkami"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s: Neplatný název volby"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s: Neplatná hodnota volby"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "Nepodporované přednastavení LZMA1/LZMA2: %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "Součet lc a lp nesmí překročit hodnotu 4"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr "Vybraný vyhledávač shod vyžaduje minimálně nice=%<PRIu32>"
+
+#: src/xz/suffix.c:79 src/xz/suffix.c:164
+#, c-format
+msgid ""
+"%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr ""
+"%s: S přepínačem --format=raw je vyžadován --sufix=.PRIP, vyjma zápisu do "
+"standardního výstupu"
+
+#: src/xz/suffix.c:99
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s: Název souboru má neznámou příponu, vynechává se"
+
+#: src/xz/suffix.c:154
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s: Soubor již má příponu „%s“, vynechává se"
+
+#: src/xz/suffix.c:205
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: Neplatná přípona názvu souboru"
+
+#: src/xz/util.c:61
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s: Hodnota není nezáporné desítkové číslo"
+
+#: src/xz/util.c:103
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s: Neplatná jednotka s předponou"
+
+#: src/xz/util.c:105
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr ""
+"Platné jednotky s předponami jsou „KiB“ (2^10 B), „MiB“ (2^20 B) a "
+"„GiB“ (2^30 B)."
+
+#: src/xz/util.c:122
+#, c-format
+msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "Hodnota volby „%s“ musí být v rozsahu [%<PRIu64>, %<PRIu64>]"
+
+#: src/xz/util.c:247
+msgid "Empty filename, skipping"
+msgstr "Prázdný název souboru, vynechává se"
+
+#: src/xz/util.c:261
+msgid "Compressed data cannot be read from a terminal"
+msgstr "Z terminálu nelze číst komprimovaná data"
+
+#: src/xz/util.c:274
+msgid "Compressed data cannot be written to a terminal"
+msgstr "Do terminálu nelze zapisovat komprimovaná data"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Zápis do standardního výstupu selhal"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#~ msgid "Limit was %s MiB, but %s MiB would have been needed"
+#~ msgstr "Limit byl %s MiB, ale bylo by zapotřebí %s MiB"
+
+#~ msgid "%s MiB (%s bytes)\n"
+#~ msgstr "%s MiB (%s bajtů)\n"
+
+#~ msgid ""
+#~ "  -e, --extreme       use more CPU time when encoding to increase "
+#~ "compression\n"
+#~ "                      ratio without increasing memory usage of the decoder"
+#~ msgstr ""
+#~ " -e, --extreme         využít více procesorového času pro kódování, čímž "
+#~ "se\n"
+#~ "                       zvýší kompresní poměr bez zvýšení paměti použité "
+#~ "kodérem"
+
+#~ msgid ""
+#~ "  -M, --memory=NUM    use roughly NUM bytes of memory at maximum; 0 "
+#~ "indicates\n"
+#~ "                      the default setting, which is 40 % of total RAM"
+#~ msgstr ""
+#~ " -M, --memory=POČ      použít zhruba POČ bajtů paměti jako maximum; 0 "
+#~ "znamená\n"
+#~ "                       výchozí nastavení, což je 40% celkového množství "
+#~ "paměti"
+
+#~ msgid ""
+#~ "\n"
+#~ "  --subblock[=OPTS]   Subblock filter; valid OPTS (valid values; "
+#~ "default):\n"
+#~ "                        size=NUM   number of bytes of data per subblock\n"
+#~ "                                   (1 - 256Mi; 4Ki)\n"
+#~ "                        rle=NUM    run-length encoder chunk size (0-256; "
+#~ "0)"
+#~ msgstr ""
+#~ "\n"
+#~ " --subblock[=VOLBY]    Subblokový filtr; platné VOLBY (platné hodnoty; "
+#~ "výchozí):\n"
+#~ "                         size=POČ   počet bajtů dat na subblok\n"
+#~ "                                    (1 - 256 Mi; 4 Ki)\n"
+#~ "                         rle=POČ    velikost dávky pro kodér run-length "
+#~ "(0-256; 0)"
+
+#~ msgid ""
+#~ "On this system and configuration, this program will use a maximum of "
+#~ "roughly\n"
+#~ "%s MiB RAM and "
+#~ msgstr ""
+#~ "Na tomto systému a s tímto nastavením použije tento program maximum ze "
+#~ "zhruba\n"
+#~ "%s MiB RAM a "
+
+#~ msgid ""
+#~ "one thread.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "jedno vlákno.\n"
+#~ "\n"
+
+#~ msgid "%s: Invalid multiplier suffix. Valid suffixes:"
+#~ msgstr "%s: Neplatná přípona. Platné přípony jsou:"

+ 993 - 0
xz.mod/xz/po/de.po

@@ -0,0 +1,993 @@
+# XZ Utils German translation
+# This file is put in the public domain.
+# Andre Noll <[email protected]>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: XZ Utils 4.999.9beta\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2015-08-07 05:10+0200\n"
+"PO-Revision-Date: 2015-08-07 14:00+0200\n"
+"Last-Translator:  <[email protected]>\n"
+"Language-Team: German\n"
+"Language: de\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: Ungültiges Argument für --block-list"
+
+#: src/xz/args.c:73
+#, c-format
+msgid "%s: Too many arguments to --block-list"
+msgstr "%s: Zu viele Argumente für --block-list"
+
+#: src/xz/args.c:102
+msgid "0 can only be used as the last element in --block-list"
+msgstr "0 kann nur das letzte Element in --block-list sein"
+
+#: src/xz/args.c:406
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s: Unbekanntes Dateiformat"
+
+#: src/xz/args.c:429 src/xz/args.c:437
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s: Integritäts-Check-Typ nicht unterstützt"
+
+#: src/xz/args.c:473
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr "Nur eine Datei kann als Argument für --files oder --files0 angegeben werden."
+
+#: src/xz/args.c:541
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "Die Umgebungsvariable %s enthält zu viele Argumente"
+
+#: src/xz/coder.c:110
+msgid "Maximum number of filters is four"
+msgstr "Maximal vier Filter möglich"
+
+#: src/xz/coder.c:129
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr "Das Speicher-Limit ist zu niedrig für die gegebene Filter-Konfiguration."
+
+#: src/xz/coder.c:159
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Verwendung einer Voreinstellung im Raw-Modus wird nicht empfohlen."
+
+#: src/xz/coder.c:161
+msgid "The exact options of the presets may vary between software versions."
+msgstr "Die genauen Optionen der Voreinstellung können zwischen Softwareversionen variieren."
+
+#: src/xz/coder.c:184
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Das .lzma-Format unterstützt nur den LZMA1-Filter"
+
+#: src/xz/coder.c:192
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "LZMA1 kann nicht mit dem .xz-Format verwendet werden"
+
+#: src/xz/coder.c:209
+msgid "The filter chain is incompatible with --flush-timeout"
+msgstr "Diese Filterkette ist inkompatibel zu --flush-timeout"
+
+#: src/xz/coder.c:215
+msgid "Switching to single-threaded mode due to --flush-timeout"
+msgstr "Schalte um auf Single-Thread-Modus wegen --flush-timeout"
+
+#: src/xz/coder.c:234
+#, c-format
+msgid "Using up to %<PRIu32> threads."
+msgstr "Benutze bis zu %<PRIu32> Threads."
+
+#: src/xz/coder.c:247
+msgid "Unsupported filter chain or filter options"
+msgstr "Optionen nicht unterstützt"
+
+#: src/xz/coder.c:255
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "Dekomprimierung wird %s MiB Speicher brauchen."
+
+#: src/xz/coder.c:290
+#, c-format
+msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
+msgstr "Passte die Anzahl Threads von %s auf %s an um nicht das Speichernutzungslimit von %s MiB zu übersteigen"
+
+#: src/xz/coder.c:344
+#, c-format
+msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Passte LZMA%c-Wörterbuchgröße von %s MiB to %s MiB an, um nicht das Speichernutzungslimit von %s MiB zu übersteigen"
+
+#: src/xz/file_io.c:100 src/xz/file_io.c:108
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Fehler beim Erzeugen der Pipeline: %s"
+
+#: src/xz/file_io.c:163
+msgid "Sandbox is disabled due to incompatible command line arguments"
+msgstr "Sandbox ist wegen inkompatibler Kommandozeilenargumente deaktiviert"
+
+#: src/xz/file_io.c:206
+msgid "Sandbox was successfully enabled"
+msgstr "Sandbox wurde erfolgreich aktiviert"
+
+#: src/xz/file_io.c:210
+msgid "Failed to enable the sandbox"
+msgstr "Konnte Sandbox nicht aktivieren"
+
+#: src/xz/file_io.c:252
+#, c-format
+msgid "%s: poll() failed: %s"
+msgstr "%s: poll() Fehler: %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:322
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s: Datei scheint umbenannt worden zu sein, daher wird sie nicht gelöscht"
+
+#: src/xz/file_io.c:329 src/xz/file_io.c:847
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s: Kann nicht löschen: %s"
+
+#: src/xz/file_io.c:354
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s: Kann Dateieigentümer nicht setzen: %s"
+
+#: src/xz/file_io.c:360
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s: Kann Dateigruppe nicht setzen: %s"
+
+#: src/xz/file_io.c:379
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s: Kann Zugriffsrechte nicht setzen: %s"
+
+#: src/xz/file_io.c:489
+#, c-format
+msgid "Error getting the file status flags from standard input: %s"
+msgstr "Kann Status-Flags der Standardeingabe nicht ermitteln: %s"
+
+#: src/xz/file_io.c:543 src/xz/file_io.c:605
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s: Überspringe symbolischen Link"
+
+#: src/xz/file_io.c:634
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s: Überspringe Verzeichnis"
+
+#: src/xz/file_io.c:640
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s: Keine reguläre Datei, überspringe"
+
+#: src/xz/file_io.c:657
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s: Datei hat das setuid- oder setgid-Bit gesetzt, überspringe"
+
+#: src/xz/file_io.c:664
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s: Datei hat sticky-Bit gesetzt, überspringe"
+
+#: src/xz/file_io.c:671
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s: Eingabedatei hat mehr als einen Hard Link, überspringe"
+
+#: src/xz/file_io.c:756
+#, c-format
+msgid "Error restoring the status flags to standard input: %s"
+msgstr "Fehler beim Wiederherstellen der Status-Flags für die Standardausgabe: %s"
+
+#: src/xz/file_io.c:805
+#, c-format
+msgid "Error getting the file status flags from standard output: %s"
+msgstr "Kann Status-Flags der Standardausgabe nicht ermitteln: %s"
+
+#: src/xz/file_io.c:983
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Fehler beim Wiederherstellen des O_APPEND-Flags bei Standardausgabe: %s"
+
+#: src/xz/file_io.c:995
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s: Fehler beim Schließen der Datei: %s"
+
+#: src/xz/file_io.c:1031 src/xz/file_io.c:1257
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr "%s: Positionierungsfehler beim Versuch eine sparse (dünnbesetzte) Datei zu erzeugen: %s"
+
+#: src/xz/file_io.c:1126
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s: Lesefehler: %s"
+
+#: src/xz/file_io.c:1146
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s: Fehler beim Lesen der Dateinamen: %s"
+
+#: src/xz/file_io.c:1156
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s: Unerwartetes Ende der Datei"
+
+#: src/xz/file_io.c:1215
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s: Schreibfehler: %s"
+
+#: src/xz/hardware.c:107
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#. 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 "Gesamtmenge physikalischer Speicher (RAM):  "
+
+#: src/xz/hardware.c:128
+msgid "Memory usage limit for compression:    "
+msgstr "Speichernutzungslimit für Komprimierung:    "
+
+#: src/xz/hardware.c:130
+msgid "Memory usage limit for decompression:  "
+msgstr "Speichernutzungslimit für Dekomprimierung:  "
+
+#. TRANSLATORS: Indicates that there is no integrity check.
+#. This string is used in tables, so the width must not
+#. exceed ten columns with a fixed-width font.
+#: src/xz/list.c:65
+msgid "None"
+msgstr "Kein"
+
+#. 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 "Unbek.2"
+
+#: src/xz/list.c:73
+msgid "Unknown-3"
+msgstr "Unbek.3"
+
+#: src/xz/list.c:75
+msgid "Unknown-5"
+msgstr "Unbek.5"
+
+#: src/xz/list.c:76
+msgid "Unknown-6"
+msgstr "Unbek.6"
+
+#: src/xz/list.c:77
+msgid "Unknown-7"
+msgstr "Unbek.7"
+
+#: src/xz/list.c:78
+msgid "Unknown-8"
+msgstr "Unbek.8"
+
+#: src/xz/list.c:79
+msgid "Unknown-9"
+msgstr "Unbek.9"
+
+#: src/xz/list.c:81
+msgid "Unknown-11"
+msgstr "Unbek.11"
+
+#: src/xz/list.c:82
+msgid "Unknown-12"
+msgstr "Unbek.12"
+
+#: src/xz/list.c:83
+msgid "Unknown-13"
+msgstr "Unbek.13"
+
+#: src/xz/list.c:84
+msgid "Unknown-14"
+msgstr "Unbek.14"
+
+#: src/xz/list.c:85
+msgid "Unknown-15"
+msgstr "Unbek.15"
+
+#: src/xz/list.c:153
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s: Datei ist leer"
+
+#: src/xz/list.c:158
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s: Zu klein um eine gültige .xz-Datei zu sein"
+
+#. TRANSLATORS: These are column headings. From Strms (Streams)
+#. to Ratio, the columns are right aligned. Check and Filename
+#. are left aligned. If you need longer words, it's OK to
+#. use two lines here. Test with "xz -l foo.xz".
+#: src/xz/list.c:671
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr " Str.  Blöcke       Kompr.     Unkompr.  Verh.  Check   Dateiname"
+
+#: src/xz/list.c:711
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Ströme:              %s\n"
+
+#: src/xz/list.c:713
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Blöcke:              %s\n"
+
+#: src/xz/list.c:715
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Größe komprimiert:   %s\n"
+
+#: src/xz/list.c:718
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Größe unkomprimiert: %s\n"
+
+#: src/xz/list.c:721
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Verhältnis:          %s\n"
+
+#: src/xz/list.c:723
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Check:               %s\n"
+
+#: src/xz/list.c:724
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Strom-Auffüllung:    %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:752
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      UncompSize  Ratio  Check      Padding"
+msgstr ""
+"  Ströme:\n"
+"     Strom    Blöcke      KompOffset    UnkompOffset       KompGröße     UnkompGröße  Verh.  Check   Auffüllung"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:807
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      UncompSize  Ratio  Check"
+msgstr ""
+"  Blöcke:\n"
+"     Strom     Block      KompOffset    UnkompOffset      TotalGröße     UnkompGröße  Verh.  Check"
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:819
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "      CheckWert %*s  Kopf  Schalter    KompGröße    Speicher  Filter"
+
+#: src/xz/list.c:897 src/xz/list.c:1072
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Benötigter Speicher: %s MiB\n"
+
+#: src/xz/list.c:899 src/xz/list.c:1074
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Größe in Köpfen:     %s\n"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "Yes"
+msgstr "Ja"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "No"
+msgstr "Nein"
+
+#: src/xz/list.c:901 src/xz/list.c:1076
+#, c-format
+msgid "  Minimum XZ Utils version: %s\n"
+msgstr "  Kleinste XZ Utils-Version: %s\n"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:1051
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s Datei\n"
+msgstr[1] "%s Dateien\n"
+
+#: src/xz/list.c:1064
+msgid "Totals:"
+msgstr "Gesamt:"
+
+#: src/xz/list.c:1065
+#, c-format
+msgid "  Number of files:    %s\n"
+msgstr "   Anzahl Dateien:     %s\n"
+
+#: src/xz/list.c:1140
+msgid "--list works only on .xz files (--format=xz or --format=auto)"
+msgstr "--list funktioniert nur mit .xz-Dateien (--format=xz oder --format=auto)"
+
+#: src/xz/list.c:1146
+msgid "--list does not support reading from standard input"
+msgstr "--list unterstützt kein Lesen der Standardeingabe"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s: Fehler beim Lesen der Dateinamen: %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s: Unerwartetes Ende beim Lesen der Dateinamen"
+
+#: src/xz/main.c:120
+#, c-format
+msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgstr "%s: Null-Zeichen gefunden beim Lesen der Dateinamen; Meinten Sie `--files0' statt `--files'?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "Komprimierung und Dekomprimierung mit --robot ist noch nicht unterstützt."
+
+#: src/xz/main.c:249
+msgid "Cannot read data from standard input when reading filenames from standard input"
+msgstr "Lesen der Standardeingabe ist nicht möglich, wenn die Dateinamen auch von der Standardeingabe gelesen werden"
+
+#. 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 "Interner Fehler (Bug)"
+
+#: src/xz/message.c:784
+msgid "Cannot establish signal handlers"
+msgstr "Kann Signalroutine nicht setzen"
+
+#: src/xz/message.c:793
+msgid "No integrity check; not verifying file integrity"
+msgstr "Kein Integritäts-Check; werde Datei-Integrität nicht überprüfen"
+
+#: src/xz/message.c:796
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr "Typ des Integritäts-Checks nicht unterstützt; werde Datei-Integrität nicht überprüfen"
+
+#: src/xz/message.c:803
+msgid "Memory usage limit reached"
+msgstr "Speichernutzungslimit erreicht"
+
+#: src/xz/message.c:806
+msgid "File format not recognized"
+msgstr "Dateiformat nicht erkannt"
+
+#: src/xz/message.c:809
+msgid "Unsupported options"
+msgstr "Optionen nicht unterstützt"
+
+#: src/xz/message.c:812
+msgid "Compressed data is corrupt"
+msgstr "Komprimierte Daten sind korrupt"
+
+#: src/xz/message.c:815
+msgid "Unexpected end of input"
+msgstr "Unerwartetes Ende der Eingabe"
+
+#: src/xz/message.c:848
+#, c-format
+msgid "%s MiB of memory is required. The limiter is disabled."
+msgstr "%s MiB Speicher wird benötigt. Der Begrenzer ist deaktiviert."
+
+#: src/xz/message.c:876
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "%s MiB Speicher wird benötigt. Limit ist %s."
+
+#: src/xz/message.c:1043
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s: Filterkette: %s\n"
+
+#: src/xz/message.c:1053
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Versuchen Sie `%s --help' für mehr Informationen."
+
+#: src/xz/message.c:1079
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Benutzung: %s [OPTION]... [DATEI]...\n"
+"Komprimiert oder dekomprimiert .xz-DATEI(EN).\n"
+"\n"
+
+#: src/xz/message.c:1086
+msgid "Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Obligatorische Argumente für lange Optionen sind auch für kurze Optionen\n"
+"zwingend.\n"
+
+#: src/xz/message.c:1090
+msgid " Operation mode:\n"
+msgstr " Operationsmodus:\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        Erzwinge Komprimierung\n"
+"  -d, --decompress      Erzwinge Dekomprimierung\n"
+"  -t, --test            Überprüfe Dateiintegrität\n"
+"  -l, --list            Führe Dateiinformationen auf"
+
+#: src/xz/message.c:1099
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+" Operationsmodifikatoren:\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            Eingabedateien beibehalten (nicht löschen)\n"
+"  -f, --force           Erzwinge Überschreiben der Ausgabedatei und\n"
+"                        (de)komprimiere Verweise (Links)\n"
+"  -c, --stdout          Schreibe nach Standardausgabe und lösche nicht die\n"
+"                        Eingabedateien"
+
+#: src/xz/message.c:1108
+msgid ""
+"      --single-stream decompress only the first stream, and silently\n"
+"                      ignore possible remaining input data"
+msgstr ""
+"      --single-stream   Dekomprimiere nur den ersten Datenstrom und ignoriere\n"
+"                        stillschweigend mögliche weitere Eingabedaten"
+
+#: 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       Erzeuge beim Dekomprimieren keine dünnbesetzten\n"
+"                        (sparse) Dateien\n"
+"  -S, --suffix=.SUF     Benutze `.SUF' als Endung für komprimierte Dateien\n"
+"      --files=[DATEI]   Lese zu verarbeitende Dateinamen von DATEI; falls\n"
+"                        DATEI nicht angegeben wurde, werden Dateinamen\n"
+"                        von der Standardeingabe gelesen. Dateinamen müssen mit\n"
+"                        einem Zeilenumbruch voneinander getrennt werden\n"
+"      --files0=[DATEI]  Wie --files, aber benutze das Null-Zeichen als Trenner"
+
+#: src/xz/message.c:1120
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+" Grundlegende Optionen für Dateiformat und Komprimierung:\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      Dateiformat zur Kodierung oder Dekodierung; mögliche\n"
+"                        Werte sind `auto' (Voreinstellung), `xz', `lzma' und\n"
+"                        `raw'\n"
+"  -C, --check=CHECK     Typ des Integritätschecks: `none' (Vorsicht), `crc32',\n"
+"                        `crc64' (Voreinstellung), oder `sha256'"
+
+#: src/xz/message.c:1127
+msgid "      --ignore-check  don't verify the integrity check when decompressing"
+msgstr "     --ignore-check     überprüfe nicht den Integritätscheck beim Dekomprimieren"
+
+#: src/xz/message.c:1131
+msgid ""
+"  -0 ... -9           compression preset; default is 6; take compressor *and*\n"
+"                      decompressor memory usage into account before using 7-9!"
+msgstr ""
+"  -0 .. -9              Kompressionseinstellung; Voreinstellung is 6. Beachten\n"
+"                        Sie den Speicherverbrauch des Komprimierers *und* des\n"
+"                        Dekomprimierers, wenn Sie 7-9 benutzen!"
+
+#: src/xz/message.c:1135
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+"  -e, --extreme         Versuche durch stärkere CPU-Nutzung das Kompressions-\n"
+"                        verhältnis zu verbessern. Dies beeinflusst nicht den\n"
+"                        Speicherbedarf des Dekomprimierers."
+
+#: src/xz/message.c:1139
+msgid ""
+"  -T, --threads=NUM   use at most NUM threads; the default is 1; set to 0\n"
+"                      to use as many threads as there are processor cores"
+msgstr ""
+"  -T, --threads=ZAHL    Erzeuge höchstens ZAHL viele Threads; die Grund-\n"
+"                        einstellung ist 1. Wenn der Wert 0 angegeben wird, dann\n"
+"                        werden so viele Threads erzeugt, wie es Prozessorkerne\n"
+"                        gibt"
+
+#: 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=GRÖẞE\n"
+"                        Beginne einen neuen .xz-Block nach GRÖẞE Bytes Eingabe;\n"
+"                        Benutzen Sie diese Option um die Block Größe für\n"
+"                        Komprimierung mit mehreren Threads zu setzen"
+
+#: 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=GRÖẞEN\n"
+"                        Beginne einen neuen .xz-Block gemäß der angegebenen,\n"
+"                        durch Kommata getrennten Intervalle an unkomprimierten\n"
+"                        Daten"
+
+#: 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=ZEITÜBERSCHREITUNG\n"
+"                        Wenn beim Komprimieren mehr als ZEITÜBERSCHREITUNG\n"
+"                        Millisekunden seit der letzten Flush-Operation ver-\n"
+"                        gangen sind und das Lesen von zusätzlichen Eingabe-\n"
+"                        daten den Prozess blockieren würde, dann werden alle\n"
+"                        noch ausstehenden Daten geschrieben"
+
+#: 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=LIMIT\n"
+"      --memlimit-decompress=LIMIT\n"
+"  -M, --memlimit=LIMIT  Setze Speichernutzungslimit für Komprimierung,\n"
+"                        Dekomprimierung, oder beides; LIMIT ist in Bytes, % RAM,\n"
+"                        oder 0 für Verwenden der Grundeinstellungen."
+
+#: src/xz/message.c:1165
+msgid ""
+"      --no-adjust     if compression settings exceed the memory usage limit,\n"
+"                      give an error instead of adjusting the settings downwards"
+msgstr ""
+"      --no-adjust       Wenn die Kompressionseinstellungen das Speicher-\n"
+"                        nutzungslimit übersteigen, erzeuge einen Fehler statt\n"
+"                        die Einstellungen nach unten anzupassen."
+
+#: src/xz/message.c:1171
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+" Benutzerdef. Filterkette für Komprimierung (alternativ zu Voreinstellung):"
+
+#: 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[=OPTIONEN]    LZMA1 oder LZMA2; OPTIONEN ist eine durch Kommata\n"
+"  --lzma2[=OPTIONEN]    Getrennte Liste bestehend aus den folgenden Optionen\n"
+"                        (zulässige Werte; Voreinstellung):\n"
+"                          preset=NUM Setze Optionen zurück zu Voreinstellung\n"
+"                                     (0-9[e])\n"
+"                          dict=NUM   Wörterbuchgröße (4 KiB - 1536 MiB; 8 MiB)\n"
+"                          lc=NUM     Anzahl der Literal-Kontext-Bits (0-4; 3)\n"
+"                          lp=NUM     Anzahl der Literal-Positions-Bits (0-4; 0)\n"
+"                          pb=NUM     Anzahl der Positions-Bits (0-4; 2)\n"
+"                          mode=MODUS Kompressionsmodus (fast, normal; normal)\n"
+"                          nice=NUM   Nice-Länge eines Treffers (2-273; 64)\n"
+"                          mf=NAME    Algorithmus zum Auffinden von\n"
+"                                     Übereinstimmungen (hc3, hc4, bt2, bt3, bt4;\n"
+"                                     bt4)\n"
+"                          depth=NUM  Maximale Suchtiefe; 0=automatisch\n"
+"                                     (Voreinstellung)"
+
+#: 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[=OPTIONEN]      x86 BCJ-Filter (32-bit und 64-bit)\n"
+"  --powerpc[=OPTIONEN]  PowerPC-BCJ-Filter (nur Big Endian)\n"
+"  --ia64[=OPTIONEN]     IA64-(Itanium-)BCJ-Filter\n"
+"  --arm[=OPTIONEN]      ARM-BCJ-Filter (nur Little Endian)\n"
+"  --armthumb[=OPTIONEN] ARM-Thumb-BCJ-Filter (nur Little Endian)\n"
+"  --sparc[=OPTIONEN]    SPARC-BCJ-Filter\n"
+"                        Zulässige Optionen für alle BCJ-Filter:\n"
+"                          start=NUM  Start-Offset für Konversion\n"
+"                          (Voreinstellung=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[=OPTIONEN]    Delta-Filter; zulässige Optionen (gültige Werte;\n"
+"                        Voreinstellung):\n"
+"                          dist=NUM  Abstand zwischen den Bytes, die voneinander\n"
+"                                    subtrahiert werden (1-256; 1)"
+
+#: src/xz/message.c:1215
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Andere Optionen:\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           Unterdrücke Warnungen; benutze diese Option zweimal\n"
+"                        um auch Fehlermeldungen zu unterdrücken\n"
+"  -v, --verbose         Sei gesprächig; benutze diese Option zweimal um noch\n"
+"                        gesprächiger zu sein"
+
+#: src/xz/message.c:1223
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr "  -Q, --no-warn         Warnungen verändern nicht den Exit Status"
+
+#: src/xz/message.c:1225
+msgid "      --robot         use machine-parsable messages (useful for scripts)"
+msgstr ""
+"      --robot           Benutze maschinen-lesbare Meldungen (nützlich für\n"
+"                        Skripte)"
+
+#: src/xz/message.c:1228
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently active\n"
+"                      memory usage limits, and exit"
+msgstr "      --info-memory     Zeige Speicherlimit an und terminiere"
+
+#: src/xz/message.c:1231
+msgid ""
+"  -h, --help          display the short help (lists only the basic options)\n"
+"  -H, --long-help     display this long help and exit"
+msgstr ""
+"  -h, --help            Zeige kurze Hilfe an (zeigt nur die grundlegenden\n"
+"                        Optionen)\n"
+"  -H, --long-help       Zeige diese lange Hilfe an und terminiere"
+
+#: src/xz/message.c:1235
+msgid ""
+"  -h, --help          display this short help and exit\n"
+"  -H, --long-help     display the long help (lists also the advanced options)"
+msgstr ""
+"  -h, --help            Zeige diese kurze Hilfe an und terminiere\n"
+"  -H, --long-help       Zeige die lange Hilfe an (zeigt auch fortgeschrittene\n"
+"                        Optionen an)"
+
+#: src/xz/message.c:1240
+msgid "  -V, --version       display the version number and exit"
+msgstr "  -V, --version         Zeige Versionsnummer an und terminiere"
+
+#: src/xz/message.c:1242
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Wenn DATEI nicht angegeben wurde, oder DATEI gleich - ist, dann wird von\n"
+"der Standardeingabe gelesen.\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 ""
+"Melde Bugs an <%s> (auf Englisch oder Finnisch).\n"
+"Melde Übersetzungsfehler an <[email protected]> (auf Engl. oder Deutsch).\n"
+
+#: src/xz/message.c:1250
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Homepage: <%s>\n"
+
+#: src/xz/message.c:1254
+msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
+msgstr "DIES IST EINE NICHT FÜR DEN PRODUKTIVBETRIEB GEEIGNETE ENTWICKLERVERSION."
+
+#: src/xz/options.c:86
+#, c-format
+msgid "%s: Options must be `name=value' pairs separated with commas"
+msgstr "%s: Optionen müssen in der Form `Name=Wert` gegeben werden, getrennt durch Kommata"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s: Ungültige Option"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s: Ungültiger Wert für Option"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "LZMA1/LZMA2 Voreinstellung ist ungültig: %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "Die Summe aus lc und lp darf höchstens 4 sein"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr "Der ausgewählte Algorithmus zum Auffinden von Übereinstimmungen braucht mindestens nice=%<PRIu32>"
+
+#: src/xz/suffix.c:133 src/xz/suffix.c:258
+#, c-format
+msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr "%s: Mit --format=raw ist --suffix=.SUF notwendig, falls nicht auf die Standardausgabe geschrieben wird"
+
+#: src/xz/suffix.c:164
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s: Dateiname hat unbekannte Endung, überspringe"
+
+#: src/xz/suffix.c:185
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s: Datei hat bereits `%s'-Endung, überspringe"
+
+#: src/xz/suffix.c:393
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: Ungültige Dateiendung"
+
+#: src/xz/util.c:71
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s: Wert ist keine nicht-negative ganze Zahl"
+
+#: src/xz/util.c:113
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s: Ungültige Einheit"
+
+#: src/xz/util.c:115
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr "Gültige Einheiten sind `KiB' (2^10), `MiB' (2^20), und `GiB' (2^30)."
+
+#: src/xz/util.c:132
+#, c-format
+msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "Wert der Option `%s' muss im Bereich [%<PRIu64>, %<PRIu64>] sein"
+
+#: src/xz/util.c:257
+msgid "Empty filename, skipping"
+msgstr "Leerer Dateiname, überspringe"
+
+#: src/xz/util.c:271
+msgid "Compressed data cannot be read from a terminal"
+msgstr "Komprimierte Daten können nicht vom Terminal gelesen werden"
+
+#: src/xz/util.c:284
+msgid "Compressed data cannot be written to a terminal"
+msgstr "Komprimierte Daten können nicht auf das Terminal geschrieben werden"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Schreiben auf die Standardausgabe fehlgeschlagen"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#~ msgid "Error setting O_NONBLOCK on standard input: %s"
+#~ msgstr "Fehler beim Setzen des O_NONBLOCK-Flags für Standardausgabe: %s"
+
+#~ msgid "Error setting O_NONBLOCK on standard output: %s"
+#~ msgstr "Fehler beim Setzen von O_NONBLOCK für die Standardausgabe: %s"

+ 978 - 0
xz.mod/xz/po/fr.po

@@ -0,0 +1,978 @@
+# XZ Utils French Translation
+# This file is put in the public domain.
+# Adrien Nader <[email protected]>, 2011-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xz-utils\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2014-11-25 20:23+0100\n"
+"PO-Revision-Date: 2010-09-24 21;12+0200\n"
+"Last-Translator: Adrien Nader <[email protected]>\n"
+"Language-Team: None\n"
+"Language: fr\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) ? 0 : 1;\n"
+
+#: src/xz/args.c:63
+#, c-format
+msgid "%s: Invalid argument to --block-list"
+msgstr ""
+
+#: src/xz/args.c:73
+#, c-format
+msgid "%s: Too many arguments to --block-list"
+msgstr ""
+
+#: src/xz/args.c:102
+msgid "0 can only be used as the last element in --block-list"
+msgstr ""
+
+#: src/xz/args.c:406
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s : Format de fichier inconnu"
+
+#: src/xz/args.c:429 src/xz/args.c:437
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s : Type de vérification d'intégrité inconnu"
+
+#: src/xz/args.c:473
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr "Un seul fichier peut être spécifié avec `--files' ou `--files0'."
+
+#: src/xz/args.c:541
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "La variable d'environnement %s contient trop d'arguments"
+
+#: src/xz/coder.c:110
+msgid "Maximum number of filters is four"
+msgstr "Le nombre maximal de filtres est quatre"
+
+#: src/xz/coder.c:129
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr "La limite d'utilisation mémoire est trop basse pour la configuration de filtres donnée."
+
+#: src/xz/coder.c:159
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Utiliser un préréglage en mode `raw' est déconseillé."
+
+#: src/xz/coder.c:161
+msgid "The exact options of the presets may vary between software versions."
+msgstr "Le détail des préréglages peut varier entre différentes versions du logiciel."
+
+#: src/xz/coder.c:184
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Le format .lzma ne prend en charge que le filtre LZMA1"
+
+#: src/xz/coder.c:192
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "Le filtre LZMA1 ne peut être utilisé avec le format .xz"
+
+#: src/xz/coder.c:209
+msgid "The filter chain is incompatible with --flush-timeout"
+msgstr ""
+
+#: src/xz/coder.c:215
+msgid "Switching to single-threaded mode due to --flush-timeout"
+msgstr ""
+
+#: src/xz/coder.c:234
+#, c-format
+msgid "Using up to %<PRIu32> threads."
+msgstr "Jusqu'à %<PRIu32> threads seront utilisés."
+
+#: src/xz/coder.c:247
+msgid "Unsupported filter chain or filter options"
+msgstr "Enchaînement ou options de filtres non pris en charge"
+
+#: src/xz/coder.c:255
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "La décompression nécessitera %s MiB de mémoire."
+
+#: src/xz/coder.c:290
+#, c-format
+msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
+msgstr "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %s MiB"
+
+#: src/xz/coder.c:344
+#, c-format
+msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Taille du dictionnaire LZMA%c réduite de %s MiB à %s MiB pour ne pas dépasser la limite d'utilisation mémoire de %s MiB"
+
+#: src/xz/file_io.c:90
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Impossible de créer un tube anonyme (pipe) : %s"
+
+#: src/xz/file_io.c:166
+#, c-format
+msgid "%s: poll() failed: %s"
+msgstr "%s : L'appel à la fonction poll() a échoué : %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:236
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s : Le fichier a apparemment été déplacé, suppression annulée"
+
+#: src/xz/file_io.c:243 src/xz/file_io.c:761
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s : Impossible de supprimer : %s"
+
+#: src/xz/file_io.c:268
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s : Impossible de modifier le propriétaire du fichier : %s"
+
+#: src/xz/file_io.c:274
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s : Impossible de modifier le groupe propriétaire du fichier : %s"
+
+#: src/xz/file_io.c:293
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s : Impossible de modifier les permissions du fichier : %s"
+
+# Note from translator on "file status flags".
+# The following entry is kept un-translated on purpose. It is difficult to
+# translate and should only happen in exceptional circumstances which means
+# that translating would:
+# - lose some of the meaning
+# - make it more difficult to look up in search engines; it might happen one in
+# a million times, if we dilute the error message in 20 languages, it will be
+# almost impossible to find an explanation and support for the error.
+#: src/xz/file_io.c:399
+#, c-format
+msgid "Error getting the file status flags from standard input: %s"
+msgstr ""
+
+#: src/xz/file_io.c:408
+#, c-format
+msgid "Error setting O_NONBLOCK on standard input: %s"
+msgstr "Impossible d'établir le drapeau O_NONBLOCK sur la sortie standard : %s"
+
+#: src/xz/file_io.c:460 src/xz/file_io.c:522
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s est un lien symbolique : ignoré"
+
+#: src/xz/file_io.c:551
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s est un répertoire : ignoré"
+
+#: src/xz/file_io.c:557
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s n'est pas un fichier régulier : ignoré"
+
+#: src/xz/file_io.c:574
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s : Le fichier possède les bits `setuid' ou `setgid' : ignoré"
+
+#: src/xz/file_io.c:581
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s : Le fichier possède le bit `sticky' : ignoré"
+
+#: src/xz/file_io.c:588
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s : Le fichier d'entrée a plus d'un lien matériel : ignoré"
+
+# See note from translator above titled "file status flags".
+#: src/xz/file_io.c:668
+#, c-format
+msgid "Error restoring the status flags to standard input: %s"
+msgstr ""
+
+# See note from translator above titled "file status flags".
+#: src/xz/file_io.c:714
+#, c-format
+msgid "Error getting the file status flags from standard output: %s"
+msgstr ""
+
+#: src/xz/file_io.c:723
+#, c-format
+msgid "Error setting O_NONBLOCK on standard output: %s"
+msgstr "Impossible d'activer le drapeau O_NONBLOCK sur la sortie standard : %s"
+
+#: src/xz/file_io.c:896
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Impossible de rétablir le drapeau O_APPEND sur la sortie standard : %s"
+
+#: src/xz/file_io.c:908
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s : Impossible de fermer le fichier : %s"
+
+#: src/xz/file_io.c:944 src/xz/file_io.c:1170
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr "%s : Impossible de se déplacer dans le fichier pour créer un 'sparse file' : %s"
+
+#: src/xz/file_io.c:1039
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s : Erreur d'écriture : %s"
+
+#: src/xz/file_io.c:1059
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s : Impossible de se déplacer dans le fichier : %s"
+
+#: src/xz/file_io.c:1069
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s : Fin de fichier inattendue"
+
+#: src/xz/file_io.c:1128
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s : Erreur d'écriture : %s"
+
+#: src/xz/hardware.c:107
+msgid "Disabled"
+msgstr "Désactivé"
+
+#. 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 "Quantité totale de mémoire physique (RAM) :  "
+
+#: src/xz/hardware.c:128
+msgid "Memory usage limit for compression:    "
+msgstr "Limite d'utilisation pour la compression :   "
+
+#: src/xz/hardware.c:130
+msgid "Memory usage limit for decompression:  "
+msgstr "Limite d'utilisation pour la décompression : "
+
+#. 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 "Aucune"
+
+#. TRANSLATORS: Indicates that integrity check name is not known,
+#. but the Check ID is known (here 2). This and other "Unknown-N"
+#. strings are used in tables, so the width must not exceed ten
+#. columns with a fixed-width font. It's OK to omit the dash if
+#. you need space for one extra letter, but don't use spaces.
+#: src/xz/list.c:72
+msgid "Unknown-2"
+msgstr "Inconnue-2"
+
+#: src/xz/list.c:73
+msgid "Unknown-3"
+msgstr "Inconnue-3"
+
+#: src/xz/list.c:75
+msgid "Unknown-5"
+msgstr "Inconnue-5"
+
+#: src/xz/list.c:76
+msgid "Unknown-6"
+msgstr "Inconnue-6"
+
+#: src/xz/list.c:77
+msgid "Unknown-7"
+msgstr "Inconnue-7"
+
+#: src/xz/list.c:78
+msgid "Unknown-8"
+msgstr "Inconnue-8"
+
+#: src/xz/list.c:79
+msgid "Unknown-9"
+msgstr "Inconnue-9"
+
+#: src/xz/list.c:81
+msgid "Unknown-11"
+msgstr "Inconnue-11"
+
+#: src/xz/list.c:82
+msgid "Unknown-12"
+msgstr "Inconnue-12"
+
+#: src/xz/list.c:83
+msgid "Unknown-13"
+msgstr "Inconnue-13"
+
+#: src/xz/list.c:84
+msgid "Unknown-14"
+msgstr "Inconnue-14"
+
+#: src/xz/list.c:85
+msgid "Unknown-15"
+msgstr "Inconnue-15"
+
+#: src/xz/list.c:153
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s : Le fichier est vide"
+
+#: src/xz/list.c:158
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s : Trop petit pour être un fichier xz valide."
+
+#. TRANSLATORS: These are column headings. From Strms (Streams)
+#. to Ratio, the columns are right aligned. Check and Filename
+#. are left aligned. If you need longer words, it's OK to
+#. use two lines here. Test with "xz -l foo.xz".
+#: src/xz/list.c:671
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr "Flux    Blocs    Compressé  Décompressé  Ratio  Vérif.  Nom de fichier"
+
+#: src/xz/list.c:711
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Flux :                            %s\n"
+
+#: src/xz/list.c:713
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Blocs :                           %s\n"
+
+#: src/xz/list.c:715
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Taille données avec compression : %s\n"
+
+#: src/xz/list.c:718
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Taille données sans compression : %s\n"
+
+#: src/xz/list.c:721
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Ratio :                           %s\n"
+
+#: src/xz/list.c:723
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Vérification :                    %s\n"
+
+#: src/xz/list.c:724
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Octets de rembourrage du flux :   %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:752
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      UncompSize  Ratio  Check      Padding"
+msgstr ""
+"  Flux :\n"
+"      Flux     Blocs    PositionComp  PositionDécomp      TailleComp    TailleDécomp  Ratio  Vérif.    Bourrage"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:807
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      UncompSize  Ratio  Check"
+msgstr ""
+"  Blocs :\n"
+"      Flux      Bloc    PositionComp  PositionDécomp       TailleTot    TailleDécomp  Ratio  Vérif."
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:819
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "     ValVérif %*sEn-tête  Drapeaux   TailleComp     UtilMém  Filtres"
+
+#: src/xz/list.c:897 src/xz/list.c:1072
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Mémoire nécessaire :              %s MiB\n"
+
+#: src/xz/list.c:899 src/xz/list.c:1074
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Tailles stockées dans l'en-tête : %s\n"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "Yes"
+msgstr "Oui"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "No"
+msgstr "Non"
+
+#: src/xz/list.c:901 src/xz/list.c:1076
+#, c-format
+msgid "  Minimum XZ Utils version: %s\n"
+msgstr "  Version minimale de XZ Utils : %s\n"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:1051
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s fichier\n"
+msgstr[1] "%s fichiers\n"
+
+#: src/xz/list.c:1064
+msgid "Totals:"
+msgstr "Totaux :"
+
+#: src/xz/list.c:1065
+#, c-format
+msgid "  Number of files:    %s\n"
+msgstr "  Nombre de fichiers : %s\n"
+
+#: src/xz/list.c:1140
+msgid "--list works only on .xz files (--format=xz or --format=auto)"
+msgstr "--list ne marche que sur les fichiers .xz (--format=xz ou --format=auto)"
+
+#: src/xz/list.c:1146
+msgid "--list does not support reading from standard input"
+msgstr "--list est incompatible avec la lecture sur l'entrée standard"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s : Erreur lors de la lecture des noms de fichiers : %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s : Fin des données inattendue lors de la lecture des noms de fichiers"
+
+#: 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 : Caractère NULL détecté lors de la lecture des noms de fichiers ; peut-être pensiez-vous à `--files0' plutot qu'a `--files' ?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "La compression et la décompression ne marchent pas encore avec --robot."
+
+#: src/xz/main.c:231
+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"
+
+#. TRANSLATORS: This is the program name in the beginning
+#. of the line in messages. Usually it becomes "xz: ".
+#. This is a translatable string because French needs
+#. a space before a colon.
+#: src/xz/message.c:713
+#, c-format
+msgid "%s: "
+msgstr "%s : "
+
+#: src/xz/message.c:776 src/xz/message.c:826
+msgid "Internal error (bug)"
+msgstr "Erreur interne (bug)"
+
+#: src/xz/message.c:783
+msgid "Cannot establish signal handlers"
+msgstr "Impossible d'installer le gestionnaire de signaux"
+
+#: src/xz/message.c:792
+msgid "No integrity check; not verifying file integrity"
+msgstr "Pas de données de vérification d'intégrité ; vérification non effectuée"
+
+#: src/xz/message.c:795
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr "Méthode de vérification d'intégrité non prise en charge ; vérification non effectuée"
+
+#: src/xz/message.c:802
+msgid "Memory usage limit reached"
+msgstr "Limite d'utilisation mémoire atteinte"
+
+#: src/xz/message.c:805
+msgid "File format not recognized"
+msgstr "Format de fichier inconnu"
+
+#: src/xz/message.c:808
+msgid "Unsupported options"
+msgstr "Options non prises en charge"
+
+#: src/xz/message.c:811
+msgid "Compressed data is corrupt"
+msgstr "Les données compressées sont corrompues"
+
+#: src/xz/message.c:814
+msgid "Unexpected end of input"
+msgstr "Fin des données inattendue "
+
+#: src/xz/message.c:847
+#, c-format
+msgid "%s MiB of memory is required. The limiter is disabled."
+msgstr "%s MiB de mémoire sont nécessaires. La limite est désactivée."
+
+#: src/xz/message.c:875
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "%s MiB de mémoire sont nécessaires, la limite étant %s."
+
+#: src/xz/message.c:1042
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s : Enchaînement de filtres : %s\n"
+
+#: src/xz/message.c:1052
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Éxécutez `%s --help' pour obtenir davantage d'informations."
+
+#: src/xz/message.c:1078
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Utilisation : %s [OPTION]... [FICHIER]...\n"
+"Compresse ou decompresse FICHIER(s) au format .xz.\n"
+"\n"
+
+#: src/xz/message.c:1085
+msgid "Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Les arguments obligatoires pour les options longues le sont aussi pour les\n"
+"options courtes.\n"
+
+#: src/xz/message.c:1089
+msgid " Operation mode:\n"
+msgstr " Mode d'opération :\n"
+
+#: src/xz/message.c:1092
+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      forcer le mode compression\n"
+"  -d, --decompress    forcer le mode décompression\n"
+"  -t, --test          tester l'intégrité du fichier compressé\n"
+"  -l, --list          lister les informations sur les fichiers .xz"
+
+#: src/xz/message.c:1098
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+" Modificateurs :\n"
+
+#: src/xz/message.c:1101
+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 pas supprimer les fichiers d'entrée\n"
+"  -f, --force         forcer l'écrasement éventuel du fichier de sortie et\n"
+"                      (dé)compresser les liens symboliques\n"
+"  -c, --stdout        écrire sur la sortie standard et ne pas supprimer les\n"
+"                      fichiers d'entrée"
+
+#: src/xz/message.c:1107
+msgid ""
+"      --single-stream decompress only the first stream, and silently\n"
+"                      ignore possible remaining input data"
+msgstr ""
+"      --single-stream décompresser uniquement le premier flux et ignorer\n"
+"                      silencieusement les données éventuellement restantes"
+
+#: src/xz/message.c:1110
+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 pas créer de 'sparse file' lors de la décompression\n"
+"  -S, --suffix=.SUF   utiliser le suffixe `.SUF' pour les fichiers compressés\n"
+"      --files[=FILE]  lire les fichiers sur lesquels opérer depuis FILE ; si\n"
+"                      FILE est omis, ceux-ci sont lus depuis l'entrée standard\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"
+
+#: src/xz/message.c:1119
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+" Options basiques de format de fichier et de compression :\n"
+
+#: src/xz/message.c:1121
+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 du fichier à encoder ou décoder ; sont acceptés :\n"
+"                      `auto' (par défaut), `xz', `lzma' et `raw'\n"
+"  -C, --check=CHECK   type de vérification d'intégrité : `none' (à utiliser avec\n"
+"                      précaution), `crc32', `crc64' (par défaut) ou `sha256'"
+
+#: src/xz/message.c:1126
+msgid "      --ignore-check  don't verify the integrity check when decompressing"
+msgstr ""
+"      --ignore-check  ne pas vérifier l'intégrité des données lors de\n"
+"                      la décompression"
+
+#: src/xz/message.c:1130
+msgid ""
+"  -0 ... -9           compression preset; default is 6; take compressor *and*\n"
+"                      decompressor memory usage into account before using 7-9!"
+msgstr ""
+"  -0 ... -9           préréglage de compression : 6 par défaut ; pensez à\n"
+"                      l'utilisation mémoire du compresseur *et* du décompresseur\n"
+"                      avant d'utiliser 7, 8 ou 9 !"
+
+#: src/xz/message.c:1134
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+"  -e, --extreme       essayer d'améliorer la compression en utilisant davantage\n"
+"                      de temps processeur ;\n"
+"                      n'affecte pas les besoins mémoire du décompresseur"
+
+#: src/xz/message.c:1138
+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=NB    créer au plus NB fils de compression (1 par défault) ; la\n"
+"                      valeur 0 est spéciale et équivaut au nombre de processeurs\n"
+"                      de la machine"
+
+#: src/xz/message.c:1143
+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=TAILLE\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"
+
+#: src/xz/message.c:1147
+msgid ""
+"      --block-list=SIZES\n"
+"                      start a new .xz block after the given comma-separated\n"
+"                      intervals of uncompressed data"
+msgstr ""
+"      --block-list=TAILLES\n"
+"                      débuter des blocs XZ après les TAILLES octets de données\n"
+"                      spécifiées avec des virgules pour séparateur"
+
+#: src/xz/message.c:1151
+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:1157
+#, 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=LIMIT\n"
+"      --memlimit-decompress=LIMIT\n"
+"  -M, --memlimit=LIMIT\n"
+"                      règle la limite d'utilisation mémoire pour la compression,\n"
+"                      décompression ou les deux ; LIMIT est en octets,\n"
+"                      pourcentage de RAM, ou 0 pour la valeur par défaut"
+
+#: src/xz/message.c:1164
+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 les réglages de compression dépassent la limite\n"
+"                      d'utilisation mémoire, renvoyer une erreur plutôt que de\n"
+"                      diminuer les réglages"
+
+#: src/xz/message.c:1170
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+" Chaîne de filtres de compression personnalisée (en lieu des préréglages) :"
+
+#: src/xz/message.c:1179
+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[=OPTS]      LZMA1/2 ; OPTS est une liste d'options parmi les suivantes\n"
+"  --lzma2[=OPTS]      (entre parenthèses : valeurs valides et par défaut) :\n"
+"                        preset=PRE remettre les options à un préréglage (0-9[e])\n"
+"                        dict=NUM   taille dictionnaire (4KiB - 1536MiB ; 8MiB)\n"
+"                        lc=NUM     nombre de 'literal context bits' (0-4 ; 3)\n"
+"                        lp=NUM     nombre de 'literal position bits' (0-4 ; 0)\n"
+"                        pb=NUM     nombre de 'position bits' (0-4 ; 2)\n"
+"                        mode=MODE  mode de compression (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  profondeur de recherche maximale ;\n"
+"                                      0=automatique (par défaut)"
+
+#: src/xz/message.c:1194
+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]        filtre BCJ x86 (32-bit et 64-bit)\n"
+"  --powerpc[=OPTS]    filtre BCJ PowerPC ('big endian' uniquement)\n"
+"  --ia64[=OPTS]       filtre BCJ IA-64 (Itanium)\n"
+"  --arm[=OPTS]        filtre BCJ ARM ('little endian' uniquement)\n"
+"  --armthumb[=OPTS]   filtre BCJ ARM-Thumb ('little endian' uniquement)\n"
+"  --sparc[=OPTS]      filtre BCJ SPARC\n"
+"                      OPTS valides pour tous les filtres BCJ :\n"
+"                        start=NUM  position de début de la conversion (défaut=0)"
+
+#: src/xz/message.c:1206
+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]      Filtre delta ; OPTS valides (vals. valides ; par défaut) :\n"
+"                        dist=NUM   distance entre les octets soustraits les\n"
+"                                   uns aux autres (1-256 ; 1)"
+
+#: src/xz/message.c:1214
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Autres options :\n"
+
+#: src/xz/message.c:1217
+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         masquer les avertissements ; spécifier deux fois pour\n"
+"                      aussi masquer les erreurs\n"
+"  -v, --verbose       être bavard ; spécifier deux fois pour l'être davantage"
+
+#: src/xz/message.c:1222
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr "  -Q, --no-warn       les avertissements ne modifient pas le code de sortie"
+
+#: src/xz/message.c:1224
+msgid "      --robot         use machine-parsable messages (useful for scripts)"
+msgstr ""
+"      --robot         utiliser des messages lisibles par un programme\n"
+"                      (utile pour les scripts)"
+
+#: src/xz/message.c:1227
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently active\n"
+"                      memory usage limits, and exit"
+msgstr ""
+"      --info-memory   afficher la quantité totale de RAM ainsi que la limite\n"
+"                      actuelle d'utilisation mémoire puis quitter"
+
+#: src/xz/message.c:1230
+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          afficher l'aide courte (ne liste que les options de base)\n"
+"  -H, --long-help     afficher l'aide longue (ceci) puis quitter"
+
+#: src/xz/message.c:1234
+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          afficher l'aide courte (ceci) puis quitter\n"
+"  -H, --long-help     afficher l'aide longue (liste aussi les options avancées)"
+
+#: src/xz/message.c:1239
+msgid "  -V, --version       display the version number and exit"
+msgstr "  -V, --version       afficher le numéro de version puis quitter"
+
+#: src/xz/message.c:1241
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sans FILE ou quand FILE est -, lire l'entrée standard.\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:1247
+#, c-format
+msgid "Report bugs to <%s> (in English or Finnish).\n"
+msgstr ""
+"Signaler les bogues à <%s> (en anglais ou en finlandais).\n"
+"Signaler les bogues de traduction à <[email protected]>.\n"
+
+#: src/xz/message.c:1249
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Page du projet %s : <%s>\n"
+
+#: src/xz/message.c:1253
+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: Les options doivent être des paires `nom=valeur' séparées par des virgules"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s : Nom d'option invalide"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s : Valeur d'option invalide"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "Préréglage LZMA1/LZMA2 non reconnu : %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "La somme de lc et lp ne doit pas dépasser 4"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr "Le `match finder' choisi nécessite au moins nice=%<PRIu32>"
+
+#: src/xz/suffix.c:133 src/xz/suffix.c:258
+#, c-format
+msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr "%s : Avec --format=raw, --suffix=.SUF est nécessaire sauf lors de l'écriture vers stdout"
+
+#: src/xz/suffix.c:164
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s : Le fichier a un suffixe inconnu, ignoré"
+
+#: src/xz/suffix.c:185
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s : Le fichier a déjà le suffixe '%s', ignoré"
+
+#: src/xz/suffix.c:393
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: Suffixe de nom de fichier invalide"
+
+#: src/xz/util.c:71
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s : La valeur n'est pas un entier décimal non négatif"
+
+#: src/xz/util.c:113
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s : Suffixe multiplicateur invalide"
+
+#: src/xz/util.c:115
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr "Les suffixes valides sont 'KiB' (2^10), 'MiB' (2^20) et 'GiB' (2^30)."
+
+#: src/xz/util.c:132
+#, c-format
+msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "La valeur de l'option '%s' doit être inclue entre %<PRIu64> et %<PRIu64>"
+
+#: src/xz/util.c:257
+msgid "Empty filename, skipping"
+msgstr "Nom de fichier vide, ignoré"
+
+#: src/xz/util.c:271
+msgid "Compressed data cannot be read from a terminal"
+msgstr "Les données compressées ne peuvent pas être lues depuis un terminal"
+
+#: src/xz/util.c:284
+msgid "Compressed data cannot be written to a terminal"
+msgstr "Les données compressées ne peuvent pas être écrites dans un terminal"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Impossible d'écrire vers la sortie standard"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Erreur inconnue"

+ 1067 - 0
xz.mod/xz/po/it.po

@@ -0,0 +1,1067 @@
+# Italian translation for xz-utils
+# This file is in the public domain
+# Gruppo traduzione italiano di Ubuntu-it <[email protected]>, 2009, 2010
+# Lorenzo De Liso <[email protected]>, 2010.
+# Milo Casagrande <[email protected]>, 2009, 2010, 2011, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xz-utils\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2014-09-14 21:56+0300\n"
+"PO-Revision-Date: 2014-10-20 13:16+0100\n"
+"Last-Translator: Milo Casagrande <[email protected]>\n"
+"Language-Team: Italian <[email protected]>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-08-16 19:16+0000\n"
+"X-Generator: Poedit 1.6.10\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/xz/args.c:63
+#, c-format
+msgid "%s: Invalid argument to --block-list"
+msgstr "%s: argomento non valido per --block-list"
+
+#: src/xz/args.c:73
+#, c-format
+msgid "%s: Too many arguments to --block-list"
+msgstr "%s: troppi argomenti per --block-list"
+
+#: src/xz/args.c:102
+msgid "0 can only be used as the last element in --block-list"
+msgstr "0 può essere usato solo come ultimo elemento in --block-list"
+
+#: src/xz/args.c:406
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s: tipo di formato del file sconosciuto"
+
+#: src/xz/args.c:429 src/xz/args.c:437
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s: tipo di controllo integrità non supportato"
+
+#: src/xz/args.c:473
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr "Solo un file può essere specificato con \"--files\" o \"--files0\"."
+
+#: src/xz/args.c:541
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "La variabile d'ambiente %s contiene troppi argomenti"
+
+#: src/xz/coder.c:110
+msgid "Maximum number of filters is four"
+msgstr "Il numero massimo di filtri è quattro"
+
+#: src/xz/coder.c:129
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr ""
+"Il limite dell'uso della memoria è troppo basso per l'impostazione del "
+"filtro dato."
+
+#: src/xz/coder.c:159
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Non è consigliato usare un preset nella modalità raw."
+
+#: src/xz/coder.c:161
+msgid "The exact options of the presets may vary between software versions."
+msgstr ""
+"Le opzioni esatte per i preset possono variare tra le versioni del software."
+
+#: src/xz/coder.c:184
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Il formato .lzma supporta solo il filtro LZMA1"
+
+#: src/xz/coder.c:192
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "LZMA1 non può essere usato con il formato .xz"
+
+#: src/xz/coder.c:209
+msgid "The filter chain is incompatible with --flush-timeout"
+msgstr "La catena di filtri non è compatibile con --flush-timeout"
+
+#: src/xz/coder.c:215
+msgid "Switching to single-threaded mode due to --flush-timeout"
+msgstr "Passaggio a modalità singolo thread poiché viene usato --flush-timeout"
+
+#: src/xz/coder.c:234
+#, c-format
+msgid "Using up to %<PRIu32> threads."
+msgstr "Vengono usati circa %<PRIu32> thread."
+
+#: src/xz/coder.c:247
+msgid "Unsupported filter chain or filter options"
+msgstr "Catena di filtri od opzioni del filtro non supportata"
+
+#: src/xz/coder.c:255
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "L'estrazione necessita di %s MiB di memoria."
+
+#: src/xz/coder.c:290
+#, c-format
+msgid ""
+"Adjusted the number of threads from %s to %s to not exceed the memory usage "
+"limit of %s MiB"
+msgstr ""
+"Regolato il numero di thread da %s a %s per non eccedere il limite di "
+"utilizzo della memoria di %s MiB"
+
+#: src/xz/coder.c:344
+#, c-format
+msgid ""
+"Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the "
+"memory usage limit of %s MiB"
+msgstr ""
+"Regolata la dimensione del dizionario LZMA%c da %s MiB a %s MiB per non "
+"superare il limite dell'uso della memoria di %s MiB"
+
+#: src/xz/file_io.c:90
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Errore nel creare una pipe: %s"
+
+#: src/xz/file_io.c:166
+#, c-format
+msgid "%s: poll() failed: %s"
+msgstr "%s: poll() non riuscita: %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:236
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s: sembra che il file sia stato spostato, non viene rimosso"
+
+#: src/xz/file_io.c:243 src/xz/file_io.c:761
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s: impossibile rimuovere: %s"
+
+#: src/xz/file_io.c:268
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s: impossibile impostare il proprietario del file: %s"
+
+#: src/xz/file_io.c:274
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s: impossibile impostare il gruppo del file: %s"
+
+#: src/xz/file_io.c:293
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s: impossibile impostare i permessi del file: %s"
+
+#: src/xz/file_io.c:399
+#, c-format
+msgid "Error getting the file status flags from standard input: %s"
+msgstr ""
+"Errore nel recuperare le flag di stato del file dallo standard input: %s"
+
+#: src/xz/file_io.c:408
+#, c-format
+msgid "Error setting O_NONBLOCK on standard input: %s"
+msgstr "Errore nell'impostare O_NONBLOCK sullo standard input: %s"
+
+#: src/xz/file_io.c:460 src/xz/file_io.c:522
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s: è un collegamento simbolico, viene saltato"
+
+#: src/xz/file_io.c:551
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s: è una directory, viene saltata"
+
+#: src/xz/file_io.c:557
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s: non è un file regolare, viene saltato"
+
+#: src/xz/file_io.c:574
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s: il file ha il bit setuid o setgid impostato, viene saltato"
+
+#: src/xz/file_io.c:581
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s: il file ha lo sticky bit impostato, viene saltato"
+
+#: src/xz/file_io.c:588
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s: il file di input ha più di un collegamento fisico, viene saltato"
+
+#: src/xz/file_io.c:668
+#, c-format
+msgid "Error restoring the status flags to standard input: %s"
+msgstr "Errore nel ripristinare le flag di stato sullo standard input: %s"
+
+#: src/xz/file_io.c:714
+#, c-format
+msgid "Error getting the file status flags from standard output: %s"
+msgstr ""
+"Errore nel recuperare le flag di stato del file dallo standard output: %s"
+
+#: src/xz/file_io.c:723
+#, c-format
+msgid "Error setting O_NONBLOCK on standard output: %s"
+msgstr "Errore nell'impostare O_NONBLOCK sullo standard output: %s"
+
+#: src/xz/file_io.c:896
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Errore nel ripristinare la flag O_APPEND sullo standard output: %s"
+
+#: src/xz/file_io.c:908
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s: chiusura del file non riuscita: %s"
+
+#: src/xz/file_io.c:944 src/xz/file_io.c:1170
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr ""
+"%s: posizionamento non riuscito nel tentativo di creare un file sparso: %s"
+
+#: src/xz/file_io.c:1039
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s: errore di lettura: %s"
+
+#: src/xz/file_io.c:1059
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s: errore nel cercare il file: %s"
+
+#: src/xz/file_io.c:1069
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s: fine del file inaspettata"
+
+#: src/xz/file_io.c:1128
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s: errore di scrittura: %s"
+
+#: src/xz/hardware.c:107
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#. 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 "Quantità totale di memoria fisica (RAM):     "
+
+#: src/xz/hardware.c:128
+msgid "Memory usage limit for compression:    "
+msgstr "Limite utilizzo memoria per la compressione: "
+
+#: src/xz/hardware.c:130
+msgid "Memory usage limit for decompression:  "
+msgstr "Limite utilizzo memoria per l'estrazione:    "
+
+#. 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 "Nessuno"
+
+#. TRANSLATORS: Indicates that integrity check name is not known,
+#. but the Check ID is known (here 2). This and other "Unknown-N"
+#. strings are used in tables, so the width must not exceed ten
+#. columns with a fixed-width font. It's OK to omit the dash if
+#. you need space for one extra letter, but don't use spaces.
+#: src/xz/list.c:72
+msgid "Unknown-2"
+msgstr "Sconosc2"
+
+#: src/xz/list.c:73
+msgid "Unknown-3"
+msgstr "Sconosc3"
+
+#: src/xz/list.c:75
+msgid "Unknown-5"
+msgstr "Sconosc5"
+
+#: src/xz/list.c:76
+msgid "Unknown-6"
+msgstr "Sconosc6"
+
+#: src/xz/list.c:77
+msgid "Unknown-7"
+msgstr "Sconosc7"
+
+#: src/xz/list.c:78
+msgid "Unknown-8"
+msgstr "Sconosc8"
+
+#: src/xz/list.c:79
+msgid "Unknown-9"
+msgstr "Sconosc9"
+
+#: src/xz/list.c:81
+msgid "Unknown-11"
+msgstr "Sconosc11"
+
+#: src/xz/list.c:82
+msgid "Unknown-12"
+msgstr "Sconosc12"
+
+#: src/xz/list.c:83
+msgid "Unknown-13"
+msgstr "Sconosc13"
+
+#: src/xz/list.c:84
+msgid "Unknown-14"
+msgstr "Sconosc14"
+
+#: src/xz/list.c:85
+msgid "Unknown-15"
+msgstr "Sconosc15"
+
+#: src/xz/list.c:153
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s: il file è vuoto"
+
+#: src/xz/list.c:158
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s: troppo piccolo per essere un file .xz valido"
+
+#. TRANSLATORS: These are column headings. From Strms (Streams)
+#. to Ratio, the columns are right aligned. Check and Filename
+#. are left aligned. If you need longer words, it's OK to
+#. use two lines here. Test with "xz -l foo.xz".
+#: src/xz/list.c:671
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr " Strm  Blocc.    Compresso     Estratto  Rapp.  Contr   Nome file"
+
+#: src/xz/list.c:711
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Stream:               %s\n"
+
+#: src/xz/list.c:713
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Blocchi:              %s\n"
+
+#: src/xz/list.c:715
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Dim. compresso:       %s\n"
+
+#: src/xz/list.c:718
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Dim. estratto:        %s\n"
+
+#: src/xz/list.c:721
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Rapporto:             %s\n"
+
+#: src/xz/list.c:723
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Controllo:            %s\n"
+
+#: src/xz/list.c:724
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Padding dello stream: %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:752
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      "
+"UncompSize  Ratio  Check      Padding"
+msgstr ""
+"Stream:\n"
+"    Stream    Blocc.    Offset comp.    Offset estr.      Dim. comp.   Dim. "
+"estratto  Rapp.  Contr      Padding"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:807
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      "
+"UncompSize  Ratio  Check"
+msgstr ""
+"  Blocchi:\n"
+"    Stream    Blocc.    Offset comp. Offset estratto       Dim. tot.   Dim. "
+"estratto  Rapp.  Contr"
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:819
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "      Val.cont %*s Header  Flag       Dim.compr.    Uso mem.  Filtri"
+
+#: src/xz/list.c:897 src/xz/list.c:1072
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Memoria necessaria:   %s MiB\n"
+
+#: src/xz/list.c:899 src/xz/list.c:1074
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Dim. negli header:    %s\n"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "Yes"
+msgstr "Sì"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "No"
+msgstr "No"
+
+#: src/xz/list.c:901 src/xz/list.c:1076
+#, c-format
+msgid "  Minimum XZ Utils version: %s\n"
+msgstr "  Versione \"XZ Utils\" minima: %s\n"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:1051
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s file\n"
+msgstr[1] "%s file\n"
+
+#: src/xz/list.c:1064
+msgid "Totals:"
+msgstr "Totali:"
+
+#: src/xz/list.c:1065
+#, c-format
+msgid "  Number of files:    %s\n"
+msgstr "  Numero di file:       %s\n"
+
+#: src/xz/list.c:1140
+msgid "--list works only on .xz files (--format=xz or --format=auto)"
+msgstr "--list funziona solamente con file .xz (--format=xz o --format=auto)"
+
+#: src/xz/list.c:1146
+msgid "--list does not support reading from standard input"
+msgstr "--list non è in grado di leggere dallo standard input"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s: errore nel leggere i nomi dei file: %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s: fine dell'input durante la lettura dei nomi dei file non attesa"
+
+#: src/xz/main.c:120
+#, c-format
+msgid ""
+"%s: Null character found when reading filenames; maybe you meant to use `--"
+"files0' instead of `--files'?"
+msgstr ""
+"%s: nessun carattere trovato durante la lettura dei nomi dei file; forse si "
+"intendeva usare \"--files0\" invece di \"--files\"?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "La compressione e l'estrazione con --robot non sono ancora supportate."
+
+#: src/xz/main.c:231
+msgid ""
+"Cannot read data from standard input when reading filenames from standard "
+"input"
+msgstr ""
+"Impossibile leggere i dati dallo standard input durante la lettura dei nomi "
+"dei file dallo standard input"
+
+#. TRANSLATORS: This is the program name in the beginning
+#. of the line in messages. Usually it becomes "xz: ".
+#. This is a translatable string because French needs
+#. a space before a colon.
+#: src/xz/message.c:713
+#, c-format
+msgid "%s: "
+msgstr "%s: "
+
+#: src/xz/message.c:776 src/xz/message.c:826
+msgid "Internal error (bug)"
+msgstr "Errore interno (bug)"
+
+#: src/xz/message.c:783
+msgid "Cannot establish signal handlers"
+msgstr "Impossibile stabilire i gestori dei segnali"
+
+#: src/xz/message.c:792
+msgid "No integrity check; not verifying file integrity"
+msgstr ""
+"Nessun controllo d'integrità; l'integrità del file non viene verificata"
+
+#: src/xz/message.c:795
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr ""
+"Tipo di controllo di integrità non supportato; l'integrità del file non "
+"viene verificata"
+
+#: src/xz/message.c:802
+msgid "Memory usage limit reached"
+msgstr "Limite di utilizzo della memoria raggiunto"
+
+#: src/xz/message.c:805
+msgid "File format not recognized"
+msgstr "Formato di file non riconosciuto"
+
+#: src/xz/message.c:808
+msgid "Unsupported options"
+msgstr "Opzioni non supportate"
+
+#: src/xz/message.c:811
+msgid "Compressed data is corrupt"
+msgstr "I dati compressi sono danneggiati"
+
+#: src/xz/message.c:814
+msgid "Unexpected end of input"
+msgstr "Fine dell'input non attesa"
+
+#: src/xz/message.c:847
+#, c-format
+msgid "%s MiB of memory is required. The limiter is disabled."
+msgstr "%s MiB di memoria sono richiesti. Il limite è disabilitato."
+
+#: src/xz/message.c:875
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "%s MiB di memoria sono richiesti. Il limite è %s."
+
+#: src/xz/message.c:1042
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s: catena di filtri: %s\n"
+
+#: src/xz/message.c:1052
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Provare \"%s --help\" per maggiori informazioni."
+
+#: src/xz/message.c:1078
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Uso: %s [OPZIONI]... [FILE]...\n"
+"Comprime o estrae i FILE nel formato .xz.\n"
+"\n"
+
+#: src/xz/message.c:1085
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"brevi.\n"
+
+#: src/xz/message.c:1089
+msgid " Operation mode:\n"
+msgstr " Modalità di operazione:\n"
+
+#: src/xz/message.c:1092
+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      Forza la compressione\n"
+"  -d, --decompress    Forza l'estrazione\n"
+"  -t, --test          Verifica l'integrità dei file compressi\n"
+"  -l, --list          Elenca informazioni sui file .xz"
+
+#: src/xz/message.c:1098
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+" Modificatori di operazioni:\n"
+
+#: src/xz/message.c:1101
+msgid ""
+"  -k, --keep          keep (don't delete) input files\n"
+"  -f, --force         force overwrite of output file and (de)compress links\n"
+"  -c, --stdout        write to standard output and don't delete input files"
+msgstr ""
+"  -k, --keep          Mantiene (non elimina) i file di input\n"
+"  -f, --force         Forza la sovrascrittura dell'output e comprime/estrae "
+"i\n"
+"                      collegamenti\n"
+"  -c, --stdout        Scrive sullo standard output e non elimina i file di "
+"input"
+
+#: src/xz/message.c:1107
+msgid ""
+"      --single-stream decompress only the first stream, and silently\n"
+"                      ignore possible remaining input data"
+msgstr ""
+"      --single-stream Decomprime solamente il primo stream e ignora\n"
+"                      silenziosamente i restanti dati di input"
+
+#: src/xz/message.c:1110
+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     Non crea file sparsi durante l'estrazione\n"
+"  -S, --suffix=.SUF   Usa il suffisso \".SUF\" sui file compressi\n"
+"      --files=[FILE]  Legge i nomi dei file da elaborare da FILE; se FILE è\n"
+"                      omesso, i nomi dei file sono letti dallo standard "
+"input;\n"
+"                      i nomi dei file devono essere terminati con un "
+"carattere\n"
+"                      di newline\n"
+"      --files0=[FILE] Come --files ma usa il carattere null come terminatore"
+
+#: src/xz/message.c:1119
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+" Formato file di base e opzioni di compressione:\n"
+
+#: src/xz/message.c:1121
+msgid ""
+"  -F, --format=FMT    file format to encode or decode; possible values are\n"
+"                      `auto' (default), `xz', `lzma', and `raw'\n"
+"  -C, --check=CHECK   integrity check type: `none' (use with caution),\n"
+"                      `crc32', `crc64' (default), or `sha256'"
+msgstr ""
+"  -F, --format=FMT    Formato file per codificare o decodificare; i "
+"possibili\n"
+"                      valori sono \"auto\" (predefinito) \"xz\", \"lzma\" e "
+"\"raw\"\n"
+"  -C, --check=CHECK   Tipo di verifica integrità: \"none\" (usare con "
+"attenzione),\n"
+"                      \"crc32\", \"crc64\" (predefinito) o \"sha256\""
+
+#: src/xz/message.c:1126
+msgid ""
+"      --ignore-check  don't verify the integrity check when decompressing"
+msgstr ""
+"      --ignore-check  Non verifica il codice di integrità quando decomprime"
+
+#: src/xz/message.c:1130
+msgid ""
+"  -0 ... -9           compression preset; default is 6; take compressor "
+"*and*\n"
+"                      decompressor memory usage into account before using "
+"7-9!"
+msgstr ""
+"  -0 ... -9           Preset di compressione; predefinito è 6; tenere a "
+"mente\n"
+"                      l'utilizzo di memoria per comprimere ed estrarre "
+"prima\n"
+"                      di usare 7-9"
+
+#: src/xz/message.c:1134
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU "
+"time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+"  -e, --extreme       Tenta di migliorare il rapporto di compressione\n"
+"                      utilizzando più tempo di CPU; non cambia i requisiti "
+"di\n"
+"                      memoria in fase di estrazione"
+
+#: src/xz/message.c:1138
+msgid ""
+"  -T, --threads=NUM   use at most NUM threads; the default is 1; set to 0\n"
+"                      to use as many threads as there are processor cores"
+msgstr ""
+"  -T, --threads=NUM   Usa al massimo NUM thread: il valore predefinito è 1,\n"
+"                      impostare a 0 per usare tanti thread quanti core la "
+"CPU\n"
+"                      ha a disposizione"
+
+#: src/xz/message.c:1143
+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=DIM\n"
+"                      Avvia un nuovo blocco .xz dopo ogni DIM byte di "
+"input:\n"
+"                      usare per impostare la dimensione del blocco durante "
+"la\n"
+"                      compressione con thread"
+
+#: src/xz/message.c:1147
+msgid ""
+"      --block-list=SIZES\n"
+"                      start a new .xz block after the given comma-separated\n"
+"                      intervals of uncompressed data"
+msgstr ""
+"      --block-list=DIM\n"
+"                      Avvia un nuovo blocco .xz dopo gli intervalli, "
+"sperati\n"
+"                      da virgole, di dati non compressi"
+
+#: src/xz/message.c:1151
+msgid ""
+"      --flush-timeout=TIMEOUT\n"
+"                      when compressing, if more than TIMEOUT milliseconds "
+"has\n"
+"                      passed since the previous flush and reading more "
+"input\n"
+"                      would block, all pending data is flushed out"
+msgstr ""
+"      --flush-timeout=TIMEOUT\n"
+"                      Durante la compressione, se sono passati più di "
+"TIMEOUT\n"
+"                      millisecondi dal flush precedente e la lettura di\n"
+"                      ulteriore input risulterebbe bloccata, viene eseguito "
+"il\n"
+"                      flush di tutti i dati pendenti"
+
+#: src/xz/message.c:1157
+#, 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=LIMIT\n"
+"      --memlimit-decompress=LIMIT\n"
+"  -M, --memlimit=LIMIT\n"
+"                      Imposta il limite di utilizzo della memoria per la\n"
+"                      compressione, l'estrazione o entrambe; LIMIT è in "
+"byte,\n"
+"                      % della memoria RAM oppure 0 per il valore predefinito"
+
+#: src/xz/message.c:1164
+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 le impostazioni di compressione eccedono il limite "
+"di\n"
+"                      utilizzo della memoria, lancia un errore invece di\n"
+"                      utilizzare valori più piccoli"
+
+#: src/xz/message.c:1170
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+" Catena di filtri personalizzati per la compressione (alternative per\n"
+" l'utilizzo di preset):"
+
+#: src/xz/message.c:1179
+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[=OPZ]      LZMA1 o LZMA2; OPZ è un elenco separato da virgole di "
+"zero\n"
+"  --lzma2[=OPZ]      o più delle seguenti opzioni (valori validi; "
+"predefinito):\n"
+"                        preset=NUM Reimposta le opzioni al preset NUM "
+"(0-9[e])\n"
+"                        dict=NUM   Dimensione del dizionario\n"
+"                                   (4KiB - 1536MiB; 8MiB)\n"
+"                        lc=NUM     Numero di bit letterali di contesto (0-4; "
+"3)\n"
+"                        lp=NUM     Numero di bit letterali di posizione "
+"(0-4; 0)\n"
+"                        pb=NUM     Numero di bit di posizione (0-4; 2)\n"
+"                        mode=MODE  Modalità di compressione\n"
+"                                   (fast, normal; normal)\n"
+"                        nice=NUM   Lunghezza valida per una corrispondenza\n"
+"                                   (2-273; 64)\n"
+"                        mf=NAME    Strumento per cercare corrispondenze\n"
+"                                   (hc3, hc4, bt2, bt3, bt4; bt4)\n"
+"                        depth=NUM  Profondità massima di ricerca; "
+"0=automatica\n"
+"                                   (predefinito)"
+
+#: src/xz/message.c:1194
+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[=OPZ]        Filtro BCJ x86 (32 e 64 bit)\n"
+"  --powerpc[=OPZ]    Filtro BCJ PowerPC (solo big endian)\n"
+"  --ia64[=OPZ]       Filtro BCJ IA-64 (Itanium)\n"
+"  --arm[=OPZ]        Filtro BCJ ARM (solo little endian)\n"
+"  --armthumb[=OPZ]   Filtro BCJ ARM-Thumb (solo little endian)\n"
+"  --sparc[=OPZ]      Filtro BCJ SPARC\n"
+"                     OPZ valide per tutti i filtri BCJ:\n"
+"                      start=NUM Offset iniziale per le conversioni\n"
+"                                (predefinito=0)"
+
+#: src/xz/message.c:1206
+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[=OPZ]      Filtro Delta; OPZ valide (valori validi; predefinito):\n"
+"                      dist=NUM   Distanza tra byte sottratti\n"
+"                                 gli uni dagli altri (1-256; 1)"
+
+#: src/xz/message.c:1214
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Altre opzioni:\n"
+
+#: src/xz/message.c:1217
+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         Sopprime gli avvisi; specificare due volte per "
+"sopprimere\n"
+"                      anche gli errori\n"
+"  -v, --verbose       Output prolisso; specificare due volte per output "
+"ancora\n"
+"                      più prolisso"
+
+#: src/xz/message.c:1222
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr "  -Q, --no-warn       Gli avvisi non influenzano lo stato d'uscita"
+
+#: src/xz/message.c:1224
+msgid ""
+"      --robot         use machine-parsable messages (useful for scripts)"
+msgstr "      --robot         Usa messaggi analizzabili (utile per gli script)"
+
+#: src/xz/message.c:1227
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently "
+"active\n"
+"                      memory usage limits, and exit"
+msgstr ""
+"      --info-memory   Visualizza la quantità totale di RAM, il limite "
+"attuale\n"
+"                      attivo di utilizzo della memore ed esce"
+
+#: src/xz/message.c:1230
+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          Stampa l'aiuto breve (elenca solo le opzioni di base)\n"
+"  -H, --long-help     Stampa questo lungo aiuto ed esce"
+
+#: src/xz/message.c:1234
+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          Stampa questo breve aiuto ed esce\n"
+"  -H, --long-help     Stampa l'aiuto lungo (elenca anche le opzioni avanzate)"
+
+#: src/xz/message.c:1239
+msgid "  -V, --version       display the version number and exit"
+msgstr "  -V, --version       Stampa il numero della versione ed esce"
+
+#: src/xz/message.c:1241
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Senza FILE, o quando FILE è -, legge lo standard input.\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:1247
+#, c-format
+msgid "Report bugs to <%s> (in English or Finnish).\n"
+msgstr ""
+"Segnalare i bug a <%s> (in inglese o finlandese).\n"
+"Segnalare i bug di traduzione a <[email protected]>.\n"
+
+#: src/xz/message.c:1249
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sito web di %s: <%s>\n"
+
+#: src/xz/message.c:1253
+msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
+msgstr ""
+"Questa è una versione di sviluppo non adatta per utilizzi in produzione."
+
+#: src/xz/options.c:86
+#, c-format
+msgid "%s: Options must be `name=value' pairs separated with commas"
+msgstr ""
+"%s: le opzioni devono essere coppie \"nome=valore\" separate da virgole"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s: nome opzione non valido"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s: valore dell'opzione non valido"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "Preset LZMA/LZMA2 non supportato: %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "La somma di lc e lp non deve superare 4"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr ""
+"Lo strumento per cercare corrispondenze selezionato richiede almeno nice="
+"%<PRIu32>"
+
+#: src/xz/suffix.c:133 src/xz/suffix.c:258
+#, c-format
+msgid ""
+"%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr ""
+"%s: con --format=raw, --suffix=.SUF è richiesto a meno che non si scriva "
+"sullo stdout"
+
+#: src/xz/suffix.c:164
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s: il nome del file ha un suffisso sconosciuto, viene saltato"
+
+#: src/xz/suffix.c:185
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s: il file ha già il suffisso \"%s\", viene saltato"
+
+#: src/xz/suffix.c:393
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: suffisso del nome del file non valido"
+
+#: src/xz/util.c:71
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s: il valore non è un numero intero decimale non-negativo"
+
+#: src/xz/util.c:113
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s: suffisso del moltiplicatore non valido"
+
+#: src/xz/util.c:115
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr ""
+"I suffissi validi sono \"KiB\" (2^10), \"MiB\" (2^20), e \"GiB\" (2^30)."
+
+#: src/xz/util.c:132
+#, c-format
+msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr ""
+"Il valore dell'opzione \"%s\" deve essere nell'intervallo [%<PRIu64>, "
+"%<PRIu64>]"
+
+#: src/xz/util.c:257
+msgid "Empty filename, skipping"
+msgstr "Nome file vuoto, viene saltato"
+
+#: src/xz/util.c:271
+msgid "Compressed data cannot be read from a terminal"
+msgstr "I dati compressi non possono essere letti da un terminale"
+
+#: src/xz/util.c:284
+msgid "Compressed data cannot be written to a terminal"
+msgstr "I dati compressi non possono essere scritti ad un terminale"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Scrittura sullo standard ouput non riuscita"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Errore sconosciuto"

+ 968 - 0
xz.mod/xz/po/pl.po

@@ -0,0 +1,968 @@
+# Polish translation for xz.
+# This file is in the public domain.
+# Jakub Bogusz <[email protected]>, 2011-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xz 5.1.4\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2014-09-14 21:56+0300\n"
+"PO-Revision-Date: 2014-10-15 20:53+0200\n"
+"Last-Translator: Jakub Bogusz <[email protected]>\n"
+"Language-Team: Polish <[email protected]>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: src/xz/args.c:63
+#, c-format
+msgid "%s: Invalid argument to --block-list"
+msgstr "%s: Błędny argument dla --block-list"
+
+#: src/xz/args.c:73
+#, c-format
+msgid "%s: Too many arguments to --block-list"
+msgstr "%s: Zbyt dużo argumentów dla --block-list"
+
+#: src/xz/args.c:102
+msgid "0 can only be used as the last element in --block-list"
+msgstr "0 w --block-list może być użyte wyłącznie jako ostatni element"
+
+#: src/xz/args.c:406
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s: Nieznany typ formatu pliku"
+
+#: src/xz/args.c:429 src/xz/args.c:437
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s: Nieobsługiwany typ kontroli spójności"
+
+#: src/xz/args.c:473
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr "Wraz z opcją `--files' lub `--files0' można podać tylko jeden plik."
+
+#: src/xz/args.c:541
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "Zmienna środowiskowa %s zawiera zbyt dużo argumentów"
+
+#: src/xz/coder.c:110
+msgid "Maximum number of filters is four"
+msgstr "Maksymalna liczba filtrów to cztery"
+
+#: src/xz/coder.c:129
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr "Limit użycia pamięci jest zbyt mały dla podanej konfiguracji filtra."
+
+#: src/xz/coder.c:159
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Użycie ustawień predefiniowanych w trybie surowym jest odradzane."
+
+#: src/xz/coder.c:161
+msgid "The exact options of the presets may vary between software versions."
+msgstr "Dokładne opcje ustawień predefiniowanych mogą różnić się między wersjami oprogramowania."
+
+#: src/xz/coder.c:184
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Format .lzma obsługuje tylko filtr LZMA1"
+
+#: src/xz/coder.c:192
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "LZMA1 nie może być używany z formatem .xz"
+
+#: src/xz/coder.c:209
+msgid "The filter chain is incompatible with --flush-timeout"
+msgstr "Łańcuch filtrów jest niezgodny z --flush-timeout"
+
+#: src/xz/coder.c:215
+msgid "Switching to single-threaded mode due to --flush-timeout"
+msgstr "Przełączanie w tryb jednowątkowy z powodu --flush-timeout"
+
+#: src/xz/coder.c:234
+#, c-format
+msgid "Using up to %<PRIu32> threads."
+msgstr "Maksymalna liczba używanych wątków: %<PRIu32>."
+
+#: src/xz/coder.c:247
+msgid "Unsupported filter chain or filter options"
+msgstr "Nieobsługiwany łańcuch filtrów lub opcje filtra"
+
+#: src/xz/coder.c:255
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "Dekompresja będzie wymagała %s MiB pamięci."
+
+#: src/xz/coder.c:290
+#, c-format
+msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
+msgstr "Skorygowano liczbę wątków z %s do %s, aby nie przekroczyć limitu użycia pamięci %s MiB"
+
+#: src/xz/coder.c:344
+#, c-format
+msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Skorygowano rozmiar słownika LZMA%c z %s MiB do %s MiB aby nie przekroczyć limitu użycia pamięci %s MiB"
+
+#: src/xz/file_io.c:90
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Błąd tworzenia potoku: %s"
+
+#: src/xz/file_io.c:166
+#, c-format
+msgid "%s: poll() failed: %s"
+msgstr "%s: poll() nie powiodło się: %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:236
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s: Plik wygląda na przeniesiony, nie zostanie usunięty"
+
+#: src/xz/file_io.c:243 src/xz/file_io.c:761
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s: Nie można usunąć: %s"
+
+#: src/xz/file_io.c:268
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s: Nie można ustawić właściciela pliku: %s"
+
+#: src/xz/file_io.c:274
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s: Nie można ustawić grupy pliku: %s"
+
+#: src/xz/file_io.c:293
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s: Nie można ustawić uprawnień pliku: %s"
+
+#: src/xz/file_io.c:399
+#, c-format
+msgid "Error getting the file status flags from standard input: %s"
+msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wejścia: %s"
+
+#: src/xz/file_io.c:408
+#, c-format
+msgid "Error setting O_NONBLOCK on standard input: %s"
+msgstr "Błąd podczas ustawiania O_NONBLOCK dla standardowego wejścia: %s"
+
+#: src/xz/file_io.c:460 src/xz/file_io.c:522
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s: Jest dowiązaniem symbolicznym, pominięto"
+
+#: src/xz/file_io.c:551
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s: Jest katalogiem, pominięto"
+
+#: src/xz/file_io.c:557
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s: Nie jest zwykłym plikiem, pominięto"
+
+#: src/xz/file_io.c:574
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s: Plik ma ustawiony bit setuid lub setgid, pominięto"
+
+#: src/xz/file_io.c:581
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s: Plik ma ustawiony bit sticky, pominięto"
+
+#: src/xz/file_io.c:588
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s: Plik wejściowy ma więcej niż jedno dowiązanie zwykłe, pominięto"
+
+#: src/xz/file_io.c:668
+#, c-format
+msgid "Error restoring the status flags to standard input: %s"
+msgstr "Błąd podczas odtwarzania flag stanu dla standardowego wejścia: %s"
+
+#: src/xz/file_io.c:714
+#, c-format
+msgid "Error getting the file status flags from standard output: %s"
+msgstr "Błąd podczas pobierania flag stanu pliku ze standardowego wyjścia: %s"
+
+#: src/xz/file_io.c:723
+#, c-format
+msgid "Error setting O_NONBLOCK on standard output: %s"
+msgstr "Błąd podczas ustawiania O_NONBLOCK dla standardowego wyjścia: %s"
+
+#: src/xz/file_io.c:896
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Błąd podczas odtwarzania flagi O_APPEND dla standardowego wyjścia: %s"
+
+#: src/xz/file_io.c:908
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s: Zamknięcie pliku nie powiodło się: %s"
+
+#: src/xz/file_io.c:944 src/xz/file_io.c:1170
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr "%s: Zmiana pozycji nie powiodła się podczas próby utworzenia pliku rzadkiego: %s"
+
+#: src/xz/file_io.c:1039
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s: Błąd odczytu: %s"
+
+#: src/xz/file_io.c:1059
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s: Błąd podczas zmiany pozycji w pliku: %s"
+
+#: src/xz/file_io.c:1069
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s: Nieoczekiwany koniec pliku"
+
+#: src/xz/file_io.c:1128
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s: Błąd zapisu: %s"
+
+#: src/xz/hardware.c:107
+msgid "Disabled"
+msgstr "Wyłączony"
+
+#. 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 "Całkowita ilość pamięci fizycznej (RAM): "
+
+#: src/xz/hardware.c:128
+msgid "Memory usage limit for compression:    "
+msgstr "Limit użycia pamięci dla kompresji:      "
+
+#: src/xz/hardware.c:130
+msgid "Memory usage limit for decompression:  "
+msgstr "Limit użycia pamięci dla dekompresji:    "
+
+#. 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 "Brak"
+
+#. TRANSLATORS: Indicates that integrity check name is not known,
+#. but the Check ID is known (here 2). This and other "Unknown-N"
+#. strings are used in tables, so the width must not exceed ten
+#. columns with a fixed-width font. It's OK to omit the dash if
+#. you need space for one extra letter, but don't use spaces.
+#: src/xz/list.c:72
+msgid "Unknown-2"
+msgstr "Nieznany-2"
+
+#: src/xz/list.c:73
+msgid "Unknown-3"
+msgstr "Nieznany-3"
+
+#: src/xz/list.c:75
+msgid "Unknown-5"
+msgstr "Nieznany-5"
+
+#: src/xz/list.c:76
+msgid "Unknown-6"
+msgstr "Nieznany-6"
+
+#: src/xz/list.c:77
+msgid "Unknown-7"
+msgstr "Nieznany-7"
+
+#: src/xz/list.c:78
+msgid "Unknown-8"
+msgstr "Nieznany-8"
+
+#: src/xz/list.c:79
+msgid "Unknown-9"
+msgstr "Nieznany-9"
+
+#: src/xz/list.c:81
+msgid "Unknown-11"
+msgstr "Nieznany11"
+
+#: src/xz/list.c:82
+msgid "Unknown-12"
+msgstr "Nieznany12"
+
+#: src/xz/list.c:83
+msgid "Unknown-13"
+msgstr "Nieznany13"
+
+#: src/xz/list.c:84
+msgid "Unknown-14"
+msgstr "Nieznany14"
+
+#: src/xz/list.c:85
+msgid "Unknown-15"
+msgstr "Nieznany15"
+
+#: src/xz/list.c:153
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s: Plik jest pusty"
+
+#: src/xz/list.c:158
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s: Za mały na poprawny plik .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:671
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr "Strum.  Bloki    Spakowany  Rozpakowany  Wsp.  Kontrola Nazwa pliku"
+
+#: src/xz/list.c:711
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Strumienie:            %s\n"
+
+#: src/xz/list.c:713
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Bloki:                 %s\n"
+
+#: src/xz/list.c:715
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Rozmiar spakowany:     %s\n"
+
+#: src/xz/list.c:718
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Rozmiar rozpakowany:   %s\n"
+
+#: src/xz/list.c:721
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Współczynnik:          %s\n"
+
+#: src/xz/list.c:723
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Kontrola spójności:    %s\n"
+
+#: src/xz/list.c:724
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Wyrównanie strumienia: %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:752
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      UncompSize  Ratio  Check      Padding"
+msgstr ""
+"  Strumienie:\n"
+"  Strumień     Bloki    Offset spak.    Offset rozp.        Rozm.spak.    Rozm.rozp.  Wsp.   Kontrola   Wyrównanie"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:807
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      UncompSize  Ratio  Check"
+msgstr ""
+"  Bloki:\n"
+"  Strumień      Blok    Offset spak.    Offset rozp.  Rozm.całkowity      Rozm.rozp.  Wsp.   Kontrola"
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:819
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "   S.kontr. %*sNagłówek Flagi     Rozm. spak.  Uż.pamięci  Filtry"
+
+#: src/xz/list.c:897 src/xz/list.c:1072
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Wymagana pamięć:       %s MiB\n"
+
+#: src/xz/list.c:899 src/xz/list.c:1074
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Rozmiar w nagłówkach:  %s\n"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "Yes"
+msgstr "Tak"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "No"
+msgstr "Nie"
+
+#: src/xz/list.c:901 src/xz/list.c:1076
+#, c-format
+msgid "  Minimum XZ Utils version: %s\n"
+msgstr "  Minimalna wersja XZ Utils: %s\n"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:1051
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s plik\n"
+msgstr[1] "%s pliki\n"
+msgstr[2] "%s plików\n"
+
+#: src/xz/list.c:1064
+msgid "Totals:"
+msgstr "Sumarycznie:"
+
+#: src/xz/list.c:1065
+#, c-format
+msgid "  Number of files:    %s\n"
+msgstr "  Liczba plików:         %s\n"
+
+#: src/xz/list.c:1140
+msgid "--list works only on .xz files (--format=xz or --format=auto)"
+msgstr "--list działa tylko z plikami .xz (--format=xz lub --format=auto)"
+
+#: src/xz/list.c:1146
+msgid "--list does not support reading from standard input"
+msgstr "--list nie obsługuje odczytu ze standardowego wejścia"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s: Błąd odczytu nazw plików: %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s: Nieoczekiwany koniec wejścia podczas odczytu nazw plików"
+
+#: 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: Napotkano znak NUL podczas odczytu nazw plików; może miało być `--files0' zamiast `--files'?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "Kompresja i dekompresja z opcją --robot nie jest jeszcze obsługiwana."
+
+#: src/xz/main.c:231
+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"
+
+#. TRANSLATORS: This is the program name in the beginning
+#. of the line in messages. Usually it becomes "xz: ".
+#. This is a translatable string because French needs
+#. a space before a colon.
+#: src/xz/message.c:713
+#, c-format
+msgid "%s: "
+msgstr "%s: "
+
+#: src/xz/message.c:776 src/xz/message.c:826
+msgid "Internal error (bug)"
+msgstr "Błąd wewnętrzny"
+
+#: src/xz/message.c:783
+msgid "Cannot establish signal handlers"
+msgstr "Nie można ustawić obsługi sygnałów"
+
+#: src/xz/message.c:792
+msgid "No integrity check; not verifying file integrity"
+msgstr "Brak kontroli spójności; poprawność plików nie będzie weryfikowana"
+
+#: src/xz/message.c:795
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr "Nieobsługiwany typ kontroli spójności; poprawność plików nie będzie weryfikowana"
+
+#: src/xz/message.c:802
+msgid "Memory usage limit reached"
+msgstr "Osiągnięto limit użycia pamięci"
+
+#: src/xz/message.c:805
+msgid "File format not recognized"
+msgstr "Nie rozpoznany format pliku"
+
+#: src/xz/message.c:808
+msgid "Unsupported options"
+msgstr "Nieobsługiwane opcje"
+
+#: src/xz/message.c:811
+msgid "Compressed data is corrupt"
+msgstr "Dane skompresowane są uszkodzone"
+
+#: src/xz/message.c:814
+msgid "Unexpected end of input"
+msgstr "Nieoczekiwany koniec wejścia"
+
+#: src/xz/message.c:847
+#, c-format
+msgid "%s MiB of memory is required. The limiter is disabled."
+msgstr "Wymagane jest %s MiB pamięci. Limit jest wyłączony."
+
+#: src/xz/message.c:875
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "Wymagane jest %s MiB pamięci. Limit to %s."
+
+#: src/xz/message.c:1042
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s: Łańcuch filtrów: %s\n"
+
+#: src/xz/message.c:1052
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Polecenie `%s --help' pokaże więcej informacji."
+
+#: src/xz/message.c:1078
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Składnia: %s [OPCJA]... [PLIK]...\n"
+"Kompresja lub dekompresja PLIKÓW w formacie .xz.\n"
+"\n"
+
+#: src/xz/message.c:1085
+msgid "Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Argumenty obowiązkowe dla opcji długich są obowiązkowe również dla opcji\n"
+"krótkich.\n"
+
+#: src/xz/message.c:1089
+msgid " Operation mode:\n"
+msgstr " Tryb pracy:\n"
+
+#: src/xz/message.c:1092
+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      wymuszenie kompresji\n"
+"  -d, --decompress    wymuszenie dekompresji\n"
+"  -t, --test          sprawdzenie spójności plików skompresowanych\n"
+"  -l, --list          wypisanie informacji o plikach .xz"
+
+#: src/xz/message.c:1098
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+" Modyfikatory operacji:\n"
+
+#: src/xz/message.c:1101
+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          zachowanie (nieusuwanie) plików wejściowych\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."
+
+#: src/xz/message.c:1107
+msgid ""
+"      --single-stream decompress only the first stream, and silently\n"
+"                      ignore possible remaining input data"
+msgstr ""
+"      --single-stream dekompresja tylko pierwszego strumienia, ciche\n"
+"                      zignorowanie pozostałych danych wejściowych"
+
+#: src/xz/message.c:1110
+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     nietworzenie plików rzadkich podczas dekompresji\n"
+"  -S, --suffix=.ROZ   użycie rozszerzenia `.ROZ' dla plików skompresowanych\n"
+"      --files[=PLIK]  odczyt nazw plików do przetworzenia z PLIKU; jeśli PLIK\n"
+"                      nie został podany, nazwy są czytane ze standardowego\n"
+"                      wejścia; muszą być zakończone znakiem nowej linii\n"
+"      --files0[=PLIK] podobnie do --files, ale znakiem kończącym musi być NUL"
+
+#: src/xz/message.c:1119
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+" Podstawowe opcje formatu pliku i kompresji:\n"
+
+#: src/xz/message.c:1121
+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=FORM   format pliki do kodowania lub dekodowania; możliwe to\n"
+"                      `auto' (domyślny), `xz', 'lzma' i `raw'\n"
+"  -C, --check=TEST    typ kontroli spójności: `none' (ostrożnie!),\n"
+"                      `crc32', `crc64' (domyślny) lub `sha256'"
+
+#: src/xz/message.c:1126
+msgid "      --ignore-check  don't verify the integrity check when decompressing"
+msgstr "      --ignore-check  bez kontroli sprawdzania integralności przy dekompresji"
+
+#: src/xz/message.c:1130
+msgid ""
+"  -0 ... -9           compression preset; default is 6; take compressor *and*\n"
+"                      decompressor memory usage into account before using 7-9!"
+msgstr ""
+"  -0 ... -9           predefiniowane opcje kompresji; domyślna to 6; przed\n"
+"                      użyciem wartości 7-9 należy wziąć pod uwagę wykorzystanie\n"
+"                      pamięci przy kompresji *oraz* dekompresji!"
+
+#: src/xz/message.c:1134
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+"  -e, --extreme       próba poprawy współczynnika kompresji z użyciem większej\n"
+"                      ilości czasu procesora; nie wpływa na wymagania\n"
+"                      pamięciowe dekompresora"
+
+#: src/xz/message.c:1138
+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=ILE   użycie maksymalnie ILU wątków; domyślnie 1; 0 oznacza\n"
+"                      tyle, ile jest rdzeni procesorów"
+
+#: src/xz/message.c:1143
+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=ROZMIAR\n"
+"                      rozpoczęcie nowego bloku .xz co ROZMIAR bajtów wejścia;\n"
+"                      opcja służy do ustawienia rozmiaru bloku dla kompresji\n"
+"                      wielowątkowej"
+
+#: src/xz/message.c:1147
+msgid ""
+"      --block-list=SIZES\n"
+"                      start a new .xz block after the given comma-separated\n"
+"                      intervals of uncompressed data"
+msgstr ""
+"      --block-list=ROZMIARY\n"
+"                      rozpoczęcie nowego bloku .xz po rozdzielonych przecinkiem\n"
+"                      przedziałach danych nieskompresowanych"
+
+#: src/xz/message.c:1151
+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=CZAS\n"
+"                      przy kompresji, jeśli minęło więcej niż CZAS milisekund\n"
+"                      ostatniegu zapisu bloku, a odczyt kolejnych danych byłby\n"
+"                      blokujący, wszystkie gotowe dane są zapisywane"
+
+#: src/xz/message.c:1157
+#, 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=LIMIT\n"
+"      --memlimit-decompress=LIMIT\n"
+"  -M, --memlimit=LIMIT\n"
+"                      ustawienie limitu użycia pamięci dla kompresji,\n"
+"                      dekompresji lub obu; LIMIT jest w bajtach, % RAM lub 0\n"
+"                      dla limitów domyślnych"
+
+#: src/xz/message.c:1164
+msgid ""
+"      --no-adjust     if compression settings exceed the memory usage limit,\n"
+"                      give an error instead of adjusting the settings downwards"
+msgstr ""
+"      --no-adjust     jeśli ustawienia kompresji przekraczają limit użycia\n"
+"                      pamięci, zostanie zgłoszony błąd zamiast zmniejszania\n"
+"                      ustawień"
+
+#: src/xz/message.c:1170
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+" Łańcuch własnych filtrów do kompresji (alternatywa do używania -0 .. -9):"
+
+#: src/xz/message.c:1179
+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[=OPCJE]     LZMA1 lub LZMA2; OPCJE to oddzielona przecinkami lista\n"
+"  --lzma2[=OPCJE]     zera lub więcej następujących opcji (w nawiasach wartości\n"
+"                      poprawne; domyślne):\n"
+"                        preset=PRE ustawienie opcji na predefiniowane (0-9[e])\n"
+"                        dict=ILE   rozmiar słownika (4KiB - 1536MiB; 8MiB)\n"
+"                        lc=ILE     liczba bitów kontekstu literału (0-4; 3)\n"
+"                        lp=ILE     liczba bitów pozycji literału (0-4; 0)\n"
+"                        pp=ILE     liczba bitów pozycji (0-4; 2)\n"
+"                        mode=TRYB  tryb kompresji (fast, normal; normal)\n"
+"                        nice=ILE   długość dopasowania (2-273; 64)\n"
+"                        mf=NAZWA   dopasowywacz (hc3, hc4, bt2, bt3, bt4; bt4)\n"
+"                        depth=ILE  maks. głębokość szukania; 0=auto (domyślne)"
+
+#: src/xz/message.c:1194
+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[=OPCJE]       Filtr BCJ x86 (32-bitowy lub 64-bitowy)\n"
+"  --powerpc[=OPCJE]   Filtr BCJ PowerPC (tylko big-endian)\n"
+"  --ia64[=OPCJE]      Filtr BCJ IA-64 (Itanium)\n"
+"  --arm[=OPCJE]       Filtr BCJ ARM (tylko little-endian)\n"
+"  --armthumb[=OPCJE]  Filtr BCJ ARM-Thumb (tylko little-endian)\n"
+"  --sparc[=OPCJE]     Filtr BCJ SPARC\n"
+"                      Poprawne OPCJE dla wszystkich filtrów BCJ:\n"
+"                        start=ILE  offset początku konwersji (domyślnie=0)"
+
+#: src/xz/message.c:1206
+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[=OPCJE]     Filtr delta; poprawne OPCJE (poprawne wart.; domyślne):\n"
+"                        dist=ILE   odległość między bajtami odejmowanymi od\n"
+"                                   siebie (1-256; 1)"
+
+#: src/xz/message.c:1214
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Inne opcje:\n"
+
+#: src/xz/message.c:1217
+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         pominięcie ostrzeżeń; dwukrotne podanie pomija też błędy\n"
+"  -v, --verbose       więcej informacji; dwukrotne podanie to jeszcze więcej"
+
+#: src/xz/message.c:1222
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr "  -Q, --no-warn       ostrzeżenia nie mają wpływu na status zakończenia"
+
+#: src/xz/message.c:1224
+msgid "      --robot         use machine-parsable messages (useful for scripts)"
+msgstr "      --robot         komunikaty w formacie dla maszyny (do skryptów)"
+
+#: src/xz/message.c:1227
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently active\n"
+"                      memory usage limits, and exit"
+msgstr ""
+"      --info-memory   wyświetlenie całkowitej ilości pamięci RAM oraz aktualnie\n"
+"                      aktywnych limitów pamięci i zakończenie pracy"
+
+#: src/xz/message.c:1230
+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          wyświetlenie krótkiego opisu (tylko podstawowe opcje)\n"
+"  -H, --long-help     wyświetlenie tego długiego opisu i zakończenie"
+
+#: src/xz/message.c:1234
+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          wyświetlenie tego krótkiego opisu i zakończenie\n"
+"  -H, --long-help     wyświetlenie długiego opisu (także opcje zaawansowane)"
+
+#: src/xz/message.c:1239
+msgid "  -V, --version       display the version number and exit"
+msgstr "  -V, --version       wyświetlenie informacji o wersji i zakończenie"
+
+#: src/xz/message.c:1241
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Jeśli nie podano PLIKU lub PLIK to -, czytane jest standardowe wejście.\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:1247
+#, c-format
+msgid "Report bugs to <%s> (in English or Finnish).\n"
+msgstr ""
+"Błędy prosimy zgłaszać na adres <%s>\n"
+"(w języku angielskim lub fińskim).\n"
+"Błędy w tłumaczeniu prosimy zgłaszać na adres\n"
+"<[email protected]>.\n"
+
+#: src/xz/message.c:1249
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Strona domowa %s: <%s>\n"
+
+#: src/xz/message.c:1253
+msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
+msgstr "TA WERSJA JEST ROZWOJOWA, NIE PRZEZNACZONA DO UŻYTKU PRODUKCYJNEGO."
+
+#: src/xz/options.c:86
+#, c-format
+msgid "%s: Options must be `name=value' pairs separated with commas"
+msgstr "%s: Opcje muszą być parami `nazwa=wartość' rozdzielonymi przecinkami"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s: Błędna nazwa opcji"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s: Błędna wartość opcji"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "Nieobsługiwane ustawienie predefiniowane LZMA1/LZMA2: %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "Suma lc i lp nie może przekroczyć 4"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr "Wybrany dopasowywacz wymaga przynajmniej nice=%<PRIu32>"
+
+#: src/xz/suffix.c:133 src/xz/suffix.c:258
+#, c-format
+msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr "%s: Przy --format=raw i zapisie do pliku wymagana jest opcja --suffix=.ROZ"
+
+#: src/xz/suffix.c:164
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s: Nazwa pliku ma nieznane rozszerzenie, pominięto"
+
+#: src/xz/suffix.c:185
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s: Plik już ma rozszerzenie `%s', pominięto"
+
+#: src/xz/suffix.c:393
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: Błędne rozszerzenie nazwy pliku"
+
+#: src/xz/util.c:71
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s: Wartość nie jest nieujemną liczbą całkowitą"
+
+#: src/xz/util.c:113
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s: Błędny przyrostek mnożnika"
+
+#: src/xz/util.c:115
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr "Poprawne przyrostki to `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 "Wartość opcji `%s' musi być w przedziale [%<PRIu64>, %<PRIu64>]"
+
+#: src/xz/util.c:257
+msgid "Empty filename, skipping"
+msgstr "Pusta nazwa pliku, pominięto"
+
+#: src/xz/util.c:271
+msgid "Compressed data cannot be read from a terminal"
+msgstr "Dane skompresowane nie mogą być czytane z terminala"
+
+#: src/xz/util.c:284
+msgid "Compressed data cannot be written to a terminal"
+msgstr "Dane skompresowane nie mogą być zapisywane na terminal"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Zapis na standardowe wyjście nie powiódł się"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Nieznany błąd"

+ 1039 - 0
xz.mod/xz/po/vi.po

@@ -0,0 +1,1039 @@
+# Vietnamese translations for xz package
+# Bản dịch tiếng Việt cho gói xz.
+# This file is put in the public domain.
+# Trần Ngọc Quân <[email protected]>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xz 5.1.4beta\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2014-09-25 08:57+0700\n"
+"PO-Revision-Date: 2014-09-25 09:06+0700\n"
+"Last-Translator: Trần Ngọc Quân <[email protected]>\n"
+"Language-Team: Vietnamese <[email protected]>\n"
+"Language: vi\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-Poedit-Basepath: ../\n"
+
+#: src/xz/args.c:63
+#, c-format
+msgid "%s: Invalid argument to --block-list"
+msgstr "%s: Đối số cho --block-list không hợp lệ"
+
+#: src/xz/args.c:73
+#, c-format
+msgid "%s: Too many arguments to --block-list"
+msgstr "%s: Quá nhiều đối số cho --block-list"
+
+#: src/xz/args.c:102
+msgid "0 can only be used as the last element in --block-list"
+msgstr "0 chỉ có thể dùng như là phần tử cuối trong --block-list"
+
+#: src/xz/args.c:406
+#, c-format
+msgid "%s: Unknown file format type"
+msgstr "%s: Không hiểu kiểu định dạng tập tin"
+
+#: src/xz/args.c:429 src/xz/args.c:437
+#, c-format
+msgid "%s: Unsupported integrity check type"
+msgstr "%s: Không hỗ trợ kiểu kiểm tra toàn vẹn"
+
+#: src/xz/args.c:473
+msgid "Only one file can be specified with `--files' or `--files0'."
+msgstr "Chỉ được đưa ra một tập tin cho “--files” hay “--files0”."
+
+#: src/xz/args.c:541
+#, c-format
+msgid "The environment variable %s contains too many arguments"
+msgstr "Biến môi trường %s chứa quá nhiều đối số"
+
+#: src/xz/coder.c:110
+msgid "Maximum number of filters is four"
+msgstr "Số lượng bộ lọc tối đa là bốn"
+
+#: src/xz/coder.c:129
+msgid "Memory usage limit is too low for the given filter setup."
+msgstr "Mức giới hạn dùng bộ nhớ là quá thấp cho việc cài đặt bộ lọc đã cho."
+
+#: src/xz/coder.c:159
+msgid "Using a preset in raw mode is discouraged."
+msgstr "Dùng hiện tại trong chế độ thô là ngớ ngẩn."
+
+#: src/xz/coder.c:161
+msgid "The exact options of the presets may vary between software versions."
+msgstr ""
+"Các tùy chọn trích xuất của chỉnh trước có thể biến đổi phụ thuộc vào phiên "
+"bản."
+
+#: src/xz/coder.c:184
+msgid "The .lzma format supports only the LZMA1 filter"
+msgstr "Định dạng .lzma chỉ hỗ trợ bộ lọc LZMA1"
+
+#: src/xz/coder.c:192
+msgid "LZMA1 cannot be used with the .xz format"
+msgstr "LZMA1 không thể được dùng với định dạng .xz"
+
+#: src/xz/coder.c:209
+msgid "The filter chain is incompatible with --flush-timeout"
+msgstr "Móc xích lọc là không tương thích với --flush-timeout"
+
+#: src/xz/coder.c:215
+msgid "Switching to single-threaded mode due to --flush-timeout"
+msgstr "Chuyển sang chế độ đơn tuyến trình bởi vì --flush-timeout"
+
+#: src/xz/coder.c:234
+#, c-format
+msgid "Using up to %<PRIu32> threads."
+msgstr "Dùng đến %<PRIu32> tuyến trình."
+
+#: src/xz/coder.c:247
+msgid "Unsupported filter chain or filter options"
+msgstr "Không hỗ trợ lọc móc xích hay tùy chọn lọc"
+
+#: src/xz/coder.c:255
+#, c-format
+msgid "Decompression will need %s MiB of memory."
+msgstr "Giải nén sẽ cần %s MiB bộ nhớ."
+
+#: src/xz/coder.c:290
+#, c-format
+msgid ""
+"Adjusted the number of threads from %s to %s to not exceed the memory usage "
+"limit of %s MiB"
+msgstr ""
+"Chỉnh số lượng tuyến trình từ %s thành %s để không vượt quá giới hạn tiêu "
+"dùng bộ nhớ là %s MiB"
+
+#: src/xz/coder.c:344
+#, c-format
+msgid ""
+"Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the "
+"memory usage limit of %s MiB"
+msgstr ""
+"Chỉnh cỡ từ điển LZMA%c từ %s MiB thành %s MiB để không vượt quá giới hạn "
+"tiêu dùng bộ nhớ là %s MiB"
+
+#: src/xz/file_io.c:90
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Gặp lỗi khi tạo một ống dẫn: %s"
+
+#: src/xz/file_io.c:166
+#, c-format
+msgid "%s: poll() failed: %s"
+msgstr "%s: hàm poll() bị lỗi: %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:236
+#, c-format
+msgid "%s: File seems to have been moved, not removing"
+msgstr "%s: Tập tin có lẽ đã bị di chuyển, không phải gỡ bỏ"
+
+#: src/xz/file_io.c:243 src/xz/file_io.c:761
+#, c-format
+msgid "%s: Cannot remove: %s"
+msgstr "%s: Không thể gỡ bỏ: %s"
+
+#: src/xz/file_io.c:268
+#, c-format
+msgid "%s: Cannot set the file owner: %s"
+msgstr "%s: Không thể đặt chủ sở hữu tập tin: %s"
+
+#: src/xz/file_io.c:274
+#, c-format
+msgid "%s: Cannot set the file group: %s"
+msgstr "%s: Không thể đặt nhóm tập tin: %s"
+
+#: src/xz/file_io.c:293
+#, c-format
+msgid "%s: Cannot set the file permissions: %s"
+msgstr "%s: Không thể đặt chế độ đọc ghi cho tập tin: %s"
+
+#: src/xz/file_io.c:399
+#, c-format
+msgid "Error getting the file status flags from standard input: %s"
+msgstr "Gặp lỗi khi lấy các cờ trạng thái tập tin từ đầu vào tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:408
+#, c-format
+msgid "Error setting O_NONBLOCK on standard input: %s"
+msgstr "Lỗi cài đặt O_NONBLOCK trên đầu vào tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:460 src/xz/file_io.c:522
+#, c-format
+msgid "%s: Is a symbolic link, skipping"
+msgstr "%s: Là một liên kết mềm nên bỏ qua"
+
+#: src/xz/file_io.c:551
+#, c-format
+msgid "%s: Is a directory, skipping"
+msgstr "%s: Không phải là một thư mục nên bỏ qua"
+
+#: src/xz/file_io.c:557
+#, c-format
+msgid "%s: Not a regular file, skipping"
+msgstr "%s: Không phải là tập tin thường nên bỏ qua"
+
+#: src/xz/file_io.c:574
+#, c-format
+msgid "%s: File has setuid or setgid bit set, skipping"
+msgstr "%s: Tập tin có đặt bít setuid hoặc setgid nên bỏ qua"
+
+#: src/xz/file_io.c:581
+#, c-format
+msgid "%s: File has sticky bit set, skipping"
+msgstr "%s: Tập tin có bít sticky nên bỏ qua"
+
+#: src/xz/file_io.c:588
+#, c-format
+msgid "%s: Input file has more than one hard link, skipping"
+msgstr "%s: Tập tin đầu vào có nhiều hơn một liên kết cứng nên bỏ qua"
+
+#: src/xz/file_io.c:668
+#, c-format
+msgid "Error restoring the status flags to standard input: %s"
+msgstr "Gặp lỗi khi phục hồi các cờ trạng thái tới đầu vào tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:714
+#, c-format
+msgid "Error getting the file status flags from standard output: %s"
+msgstr "Gặp lỗi khi lấy các cờ trạng thái tập tin từ đầu vào tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:723
+#, c-format
+msgid "Error setting O_NONBLOCK on standard output: %s"
+msgstr "Lỗi cài đặt O_NONBLOCK trên đầu ra tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:896
+#, c-format
+msgid "Error restoring the O_APPEND flag to standard output: %s"
+msgstr "Gặp lỗi khi phục hồi cờ O_APPEND trên đầu ra tiêu chuẩn: %s"
+
+#: src/xz/file_io.c:908
+#, c-format
+msgid "%s: Closing the file failed: %s"
+msgstr "%s: Gặp lỗi khi đóng tập tin: %s"
+
+#: src/xz/file_io.c:944 src/xz/file_io.c:1170
+#, c-format
+msgid "%s: Seeking failed when trying to create a sparse file: %s"
+msgstr ""
+"%s: Gặp lỗi khi di chuyển vị trí đọc khi cố tạo một tập tin rải rác: %s"
+
+#: src/xz/file_io.c:1039
+#, c-format
+msgid "%s: Read error: %s"
+msgstr "%s: Lỗi đọc: %s"
+
+#: src/xz/file_io.c:1059
+#, c-format
+msgid "%s: Error seeking the file: %s"
+msgstr "%s: Gặp lỗi khi di chuyển vị trí đọc tập tin: %s"
+
+#: src/xz/file_io.c:1069
+#, c-format
+msgid "%s: Unexpected end of file"
+msgstr "%s: Kết thúc tập tin bất ngờ"
+
+#: src/xz/file_io.c:1128
+#, c-format
+msgid "%s: Write error: %s"
+msgstr "%s: Lỗi ghi: %s"
+
+#: src/xz/hardware.c:107
+msgid "Disabled"
+msgstr "Bị tắt"
+
+#. 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 "Tổng dung lượng bộ nhớ vật lý (RAM):  "
+
+#: src/xz/hardware.c:128
+msgid "Memory usage limit for compression:    "
+msgstr "Mức giới hạn dùng bộ nhớ cho nén:     "
+
+#: src/xz/hardware.c:130
+msgid "Memory usage limit for decompression:  "
+msgstr "Mức giới hạn dùng bộ nhớ cho giải né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 "Không"
+
+#. TRANSLATORS: Indicates that integrity check name is not known,
+#. but the Check ID is known (here 2). This and other "Unknown-N"
+#. strings are used in tables, so the width must not exceed ten
+#. columns with a fixed-width font. It's OK to omit the dash if
+#. you need space for one extra letter, but don't use spaces.
+#: src/xz/list.c:72
+msgid "Unknown-2"
+msgstr "Chưa_biết2"
+
+#: src/xz/list.c:73
+msgid "Unknown-3"
+msgstr "Chưa_biết3"
+
+#: src/xz/list.c:75
+msgid "Unknown-5"
+msgstr "Chưa_biết5"
+
+#: src/xz/list.c:76
+msgid "Unknown-6"
+msgstr "Chưa_biết6"
+
+#: src/xz/list.c:77
+msgid "Unknown-7"
+msgstr "Chưa_biết7"
+
+#: src/xz/list.c:78
+msgid "Unknown-8"
+msgstr "Chưa_biết8"
+
+#: src/xz/list.c:79
+msgid "Unknown-9"
+msgstr "Chưa_biết9"
+
+#: src/xz/list.c:81
+msgid "Unknown-11"
+msgstr "ChưaBiết11"
+
+#: src/xz/list.c:82
+msgid "Unknown-12"
+msgstr "ChưaBiết12"
+
+#: src/xz/list.c:83
+msgid "Unknown-13"
+msgstr "ChưaBiết13"
+
+#: src/xz/list.c:84
+msgid "Unknown-14"
+msgstr "ChưaBiết14"
+
+#: src/xz/list.c:85
+msgid "Unknown-15"
+msgstr "ChưaBiết15"
+
+#: src/xz/list.c:153
+#, c-format
+msgid "%s: File is empty"
+msgstr "%s: Tập tin trống rỗng"
+
+#: src/xz/list.c:158
+#, c-format
+msgid "%s: Too small to be a valid .xz file"
+msgstr "%s: Là quá nhỏ đối với tập tin .xz hợp lệ"
+
+#. TRANSLATORS: These are column headings. From Strms (Streams)
+#. to Ratio, the columns are right aligned. Check and Filename
+#. are left aligned. If you need longer words, it's OK to
+#. use two lines here. Test with "xz -l foo.xz".
+#: src/xz/list.c:671
+msgid "Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename"
+msgstr "Luồng    Khối          Nén     Giải nén  Tỷ lệ  Ktra    Tập tin"
+
+#: src/xz/list.c:711
+#, c-format
+msgid "  Streams:            %s\n"
+msgstr "  Luồng dữ liệu:      %s\n"
+
+#: src/xz/list.c:713
+#, c-format
+msgid "  Blocks:             %s\n"
+msgstr "  Khối:               %s\n"
+
+#: src/xz/list.c:715
+#, c-format
+msgid "  Compressed size:    %s\n"
+msgstr "  Cỡ khi bị nén:      %s\n"
+
+#: src/xz/list.c:718
+#, c-format
+msgid "  Uncompressed size:  %s\n"
+msgstr "  Cỡ sau giải nén:    %s\n"
+
+#: src/xz/list.c:721
+#, c-format
+msgid "  Ratio:              %s\n"
+msgstr "  Tỷ lệ nén:          %s\n"
+
+#: src/xz/list.c:723
+#, c-format
+msgid "  Check:              %s\n"
+msgstr "  Kiểm tra:           %s\n"
+
+#: src/xz/list.c:724
+#, c-format
+msgid "  Stream padding:     %s\n"
+msgstr "  Đệm luồng dữ liệu:  %s\n"
+
+#. TRANSLATORS: The second line is column headings. All except
+#. Check are right aligned; Check is left aligned. Test with
+#. "xz -lv foo.xz".
+#: src/xz/list.c:752
+msgid ""
+"  Streams:\n"
+"    Stream    Blocks      CompOffset    UncompOffset        CompSize      "
+"UncompSize  Ratio  Check      Padding"
+msgstr ""
+"  Luồng dữ liệu:\n"
+"     Luồng      Khối           BùNén       BùGiảiNén           CỡNén       "
+"CỡGiảiNén   TỷLệ  Ktra           Đệm"
+
+#. TRANSLATORS: The second line is column headings. All
+#. except Check are right aligned; Check is left aligned.
+#: src/xz/list.c:807
+#, c-format
+msgid ""
+"  Blocks:\n"
+"    Stream     Block      CompOffset    UncompOffset       TotalSize      "
+"UncompSize  Ratio  Check"
+msgstr ""
+"  Khối:\n"
+"     Luồng      Khối           BùNén       BùGiảiNén          CỡTổng       "
+"CỡGiảiNén   TỷLệ  Ktra"
+
+#. TRANSLATORS: These are additional column headings
+#. for the most verbose listing mode. CheckVal
+#. (Check value), Flags, and Filters are left aligned.
+#. Header (Block Header Size), CompSize, and MemUsage
+#. are right aligned. %*s is replaced with 0-120
+#. spaces to make the CheckVal column wide enough.
+#. Test with "xz -lvv foo.xz".
+#: src/xz/list.c:819
+#, c-format
+msgid "      CheckVal %*s Header  Flags        CompSize    MemUsage  Filters"
+msgstr "       GTrịKiểm %*s    Đầu  Cờ              CỡNén     DùngRAM  BộLọc"
+
+#: src/xz/list.c:897 src/xz/list.c:1072
+#, c-format
+msgid "  Memory needed:      %s MiB\n"
+msgstr "  Bộ nhớ cần:         %s MiB\n"
+
+#: src/xz/list.c:899 src/xz/list.c:1074
+#, c-format
+msgid "  Sizes in headers:   %s\n"
+msgstr "  Kích cỡ phần đầu:   %s\n"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "Yes"
+msgstr "Có"
+
+#: src/xz/list.c:900 src/xz/list.c:1075
+msgid "No"
+msgstr "Không"
+
+#: src/xz/list.c:901 src/xz/list.c:1076
+#, c-format
+msgid "  Minimum XZ Utils version: %s\n"
+msgstr "  Phiên bản “XZ Utils” tối thiểu: %s\n"
+
+#. TRANSLATORS: %s is an integer. Only the plural form of this
+#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
+#: src/xz/list.c:1051
+#, c-format
+msgid "%s file\n"
+msgid_plural "%s files\n"
+msgstr[0] "%s tập tin\n"
+
+#: src/xz/list.c:1064
+msgid "Totals:"
+msgstr "Tổng cộng:"
+
+#: src/xz/list.c:1065
+#, c-format
+msgid "  Number of files:    %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
+msgid "--list does not support reading from standard input"
+msgstr "--list không hỗ trợ đọc từ đầu vào tiêu chuẩn"
+
+#: src/xz/main.c:89
+#, c-format
+msgid "%s: Error reading filenames: %s"
+msgstr "%s: Gặp lỗi khi đọc tên tập tin: %s"
+
+#: src/xz/main.c:96
+#, c-format
+msgid "%s: Unexpected end of input when reading filenames"
+msgstr "%s: Gặp kết thúc đầu vào bất ngờ khi đọc các tên tập tin"
+
+#: src/xz/main.c:120
+#, c-format
+msgid ""
+"%s: Null character found when reading filenames; maybe you meant to use `--"
+"files0' instead of `--files'?"
+msgstr ""
+"%s: Gặp ký hiệu Null khi đọc tên tập tin; có lẽ ý bạn muốn là dùng “--"
+"files0” chứ không phải “--files'?"
+
+#: src/xz/main.c:174
+msgid "Compression and decompression with --robot are not supported yet."
+msgstr "Nén và giải nén với --robot vẫn chưa được hỗ trợ."
+
+#: src/xz/main.c:231
+msgid ""
+"Cannot read data from standard input when reading filenames from standard "
+"input"
+msgstr ""
+"Không thể đọc dữ liệu từ đầu vào tiêu chuẩn khi đọc tập tin từ đầu vào tiêu "
+"chuẩn"
+
+#. TRANSLATORS: This is the program name in the beginning
+#. of the line in messages. Usually it becomes "xz: ".
+#. This is a translatable string because French needs
+#. a space before a colon.
+#: src/xz/message.c:713
+#, c-format
+msgid "%s: "
+msgstr "%s: "
+
+#: src/xz/message.c:776 src/xz/message.c:826
+msgid "Internal error (bug)"
+msgstr "Lỗi nội bộ (lỗi)"
+
+#: src/xz/message.c:783
+msgid "Cannot establish signal handlers"
+msgstr "Không thể thiết lập bộ xử lý tín hiệu"
+
+#: src/xz/message.c:792
+msgid "No integrity check; not verifying file integrity"
+msgstr ""
+"Không có kiểm tra toàn vẹn nên không thể thẩm tra tính toàn vẹn của tập tin"
+
+#: src/xz/message.c:795
+msgid "Unsupported type of integrity check; not verifying file integrity"
+msgstr ""
+"Kiểu kiểm tra toàn vẹn chưa được hỗ trợ; nên không thể thẩm tra tính toàn "
+"vẹn của tập tin"
+
+#: src/xz/message.c:802
+msgid "Memory usage limit reached"
+msgstr "Đã chạm mốc giới hạn sử dụng bộ nhớ"
+
+#: src/xz/message.c:805
+msgid "File format not recognized"
+msgstr "Không nhận ra định dạng tập tin"
+
+#: src/xz/message.c:808
+msgid "Unsupported options"
+msgstr "Tùy chọn không được hỗ trợ"
+
+#: src/xz/message.c:811
+msgid "Compressed data is corrupt"
+msgstr "Dữ liệu đã nén bị hỏng"
+
+#: src/xz/message.c:814
+msgid "Unexpected end of input"
+msgstr "Gặp kết thúc đầu vào bất ngờ"
+
+#: src/xz/message.c:847
+#, c-format
+msgid "%s MiB of memory is required. The limiter is disabled."
+msgstr "Yêu cầu cần có %s MiB bộ nhớ. Nhưng giới hạn bị tắt."
+
+#: src/xz/message.c:875
+#, c-format
+msgid "%s MiB of memory is required. The limit is %s."
+msgstr "Yêu cầu cần có %s MiB bộ nhớ. Nhưng giới hạn là %s."
+
+#: src/xz/message.c:1042
+#, c-format
+msgid "%s: Filter chain: %s\n"
+msgstr "%s: Móc xích lọc: %s\n"
+
+#: src/xz/message.c:1052
+#, c-format
+msgid "Try `%s --help' for more information."
+msgstr "Hãy chạy lệnh “%s --help” để xem thông tin thêm."
+
+#: src/xz/message.c:1078
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+"Compress or decompress FILEs in the .xz format.\n"
+"\n"
+msgstr ""
+"Cách dùng: %s [TÙY CHỌN]... [TẬP TIN]...\n"
+"Nén hoặc giải nén các TẬP TIN có định dạng .xz.\n"
+"\n"
+
+#: src/xz/message.c:1085
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Các tùy chọn dài bắt buộc phải có đối số thì với tùy chọn ngắn cũng vậy.\n"
+
+#: src/xz/message.c:1089
+msgid " Operation mode:\n"
+msgstr " Chế độ thao tác:\n"
+
+#: src/xz/message.c:1092
+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      ép buộc nén\n"
+"  -d, --decompress    ép buộc giải 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"
+
+#: src/xz/message.c:1098
+msgid ""
+"\n"
+" Operation modifiers:\n"
+msgstr ""
+"\n"
+" Bộ chỉnh sửa thao tác:\n"
+
+#: src/xz/message.c:1101
+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          giữ lại (đừng xóa) tập tin đầu vào\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"
+
+#: src/xz/message.c:1107
+msgid ""
+"      --single-stream decompress only the first stream, and silently\n"
+"                      ignore possible remaining input data"
+msgstr ""
+"      --single-stream chỉ giải nén luồng dữ liệu đầu, và bỏ qua\n"
+"                      dữ liệu đầu vào còn lại có thể"
+
+#: src/xz/message.c:1110
+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     đừng tạo các tập tin rải rác khi giải nén\n"
+"  -S, --suffix=.ĐUÔI  dùng hậu tố “.ĐUÔI” trên các tập tin nén\n"
+"      --files[=TẬP-TIN]  đọc các tập tin cần xử lý từ TẬP-TIN; nếu không có\n"
+"                      TẬP-TIN thì tên tập tin sẽ được đọc vào từ đầu vào "
+"tiêu\n"
+"                      chuẩn; chúng phải được kết thúc bằng ký tự dòng mới\n"
+"      --files0[=TẬP-TIN] giống --files nhưng ký tự kết thúc là null"
+
+#: src/xz/message.c:1119
+msgid ""
+"\n"
+" Basic file format and compression options:\n"
+msgstr ""
+"\n"
+" Các tùy chọn về định dạng và nén cơ bản:\n"
+
+#: src/xz/message.c:1121
+msgid ""
+"  -F, --format=FMT    file format to encode or decode; possible values are\n"
+"                      `auto' (default), `xz', `lzma', and `raw'\n"
+"  -C, --check=CHECK   integrity check type: `none' (use with caution),\n"
+"                      `crc32', `crc64' (default), or `sha256'"
+msgstr ""
+"  -F, --format=ĐDạng  định dạng tập tin cần mã hóa hoặc giải mã; giá trị có "
+"thể\n"
+"                      là “auto” (mặc định), “xz”, “lzma”, và “raw”\n"
+"  -C, --check=KIỂM    kiểu kiểm tra toàn vẹn: “none” (thận trọng khi dùng),\n"
+"                      “crc32”, “crc64” (mặc định), hay “sha256”"
+
+#: src/xz/message.c:1126
+msgid ""
+"      --ignore-check  don't verify the integrity check when decompressing"
+msgstr "      --ignore-check  không thẩm tra tính toàn vẹn khi giải nén"
+
+#: src/xz/message.c:1130
+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ức nén; mặc định là 6; tiêu dùng nhiều bộ nhớ khi "
+"nén\n"
+"                      và giải nén, nên tính toán trước khi dùng 7-9!"
+
+#: src/xz/message.c:1134
+msgid ""
+"  -e, --extreme       try to improve compression ratio by using more CPU "
+"time;\n"
+"                      does not affect decompressor memory requirements"
+msgstr ""
+"  -e, --extreme       cố gắng nâng cao mức nén bằng cách dùng nhiều CPU "
+"hơn;\n"
+"                      nhưng không yêu cần nhiều bộ nhớ khi giải nén"
+
+#: src/xz/message.c:1138
+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=SỐ    dùng tối đa là SỐ tuyến trình; mặc định là 1; đặt\n"
+"                      thành 0 để dùng số lượng bằng số lõi vi xử lý"
+
+#: src/xz/message.c:1143
+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=CỠ\n"
+"                      bắt đầu một khối .xz mới sau mỗi CỠ byte của đầu vào;\n"
+"                      dùng tùy chọn này để đặt cỡ khối cho nén tuyến trình"
+
+#: src/xz/message.c:1147
+msgid ""
+"      --block-list=SIZES\n"
+"                      start a new .xz block after the given comma-separated\n"
+"                      intervals of uncompressed data"
+msgstr ""
+"      --block-list=CỠ\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"
+
+#: src/xz/message.c:1151
+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=THỜI_GIAN_CHỜ\n"
+"                      khi đang nén, nếu đã trải qua hơn THỜI_GIAN_CHỜ milli-"
+"giây\n"
+"                      kể từ lần đẩy dữ liệu lên đĩa trước đó và đang đọc "
+"thêm\n"
+"                      khối nữa, mọi dữ liệu đang chờ sẽ được ghi lên đĩa"
+
+#: src/xz/message.c:1157
+#, 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=GIỚI_HẠN\n"
+"      --memlimit-decompress=GIỚI_HẠN\n"
+"  -M, --memlimit=GIỚI_HẠN\n"
+"                      đặt mức giới hạn dùng bộ nhớ cho việc nén, giải nén,\n"
+"                      hoặc cả hai; GIỚI_HẠN có đơn vị là byte, % của RAM,\n"
+"                      hay 0 cho mặc định"
+
+#: src/xz/message.c:1164
+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ếu các cài đặt nén vượt quá giới hạn dùng bộ nhớ,\n"
+"                      đưa ra một lỗi thay vì sửa đổi các cài đặt xuống"
+
+#: src/xz/message.c:1170
+msgid ""
+"\n"
+" Custom filter chain for compression (alternative for using presets):"
+msgstr ""
+"\n"
+" Móc xích lọc tùy chỉnh cho nén (thay cho việc dùng chỉnh trước):"
+
+#: src/xz/message.c:1179
+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[=CTC]       LZMA1 hay LZMA2; CÁC-TÙY-CHỌN là danh sách của không "
+"hoặc\n"
+"  --lzma2[=CTC]       hơn các tùy chọn sau đây (giá trị hợp lệ; mặc định):\n"
+"                        preset=PRE các tùy chọn tối ưu nén (0-9[e])\n"
+"                        dict=SỐ    cỡ từ điển (4KiB - 1536MiB; 8MiB)\n"
+"                        lc=SỐ      số bít ngữ cảnh văn bản (0-4; 3)\n"
+"                        lp=SỐ      số bít vị trí văn bản (0-4; 0)\n"
+"                        pb=SỐ      số bít vị trí (0-4; 2)\n"
+"                        mode=CHẾ_ĐỘ  chế độ nén (fast, normal; normal)\n"
+"                        nice=SỐ    chiều dài “tốt” của khớp (2-273; 64)\n"
+"                        mf=TÊN     bộ tìm khớp (hc3, hc4, bt2, bt3, bt4; "
+"bt4)\n"
+"                        depth=SỐ   mức sâu tìm kiếm tối đa; 0=tự động (mặc "
+"định)"
+
+#: src/xz/message.c:1194
+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]        bộ lọc x86 BCJ (32-bit và 64-bit)\n"
+"  --powerpc[=OPTS]    bộ lọc PowerPC BCJ (chỉ big endian)\n"
+"  --ia64[=OPTS]       IA-64 (Itanium) BCJ\n"
+"  --arm[=OPTS]        bộ lọc ARM 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"
+"                      các tùy chọn hợp lệ cho mọi bộ lọc BCJ:\n"
+"                        start=SỐ khoảng bù khởi đầu cho chuyển đổi (mặc "
+"định=0)"
+
+#: src/xz/message.c:1206
+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]      bộ lọc Delta;\n"
+"                      CÁC-TÙY-CHỌN hợp lệ (giá trị hợp lệ; mặc định):\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)"
+
+#: src/xz/message.c:1214
+msgid ""
+"\n"
+" Other options:\n"
+msgstr ""
+"\n"
+" Tùy chọn khác:\n"
+
+#: src/xz/message.c:1217
+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         không xuất các cảnh báo;\n"
+"                      chỉ định hai lần nến bạn muốn chặn cả báo lỗi\n"
+"  -v, --verbose       thông báo chi tiết; dùng hai lần nếu muốn chi tiết hơn"
+
+#: src/xz/message.c:1222
+msgid "  -Q, --no-warn       make warnings not affect the exit status"
+msgstr ""
+"  -Q, --no-warn       làm cho các cảnh báo không ảnh hưởng đến trạng thái "
+"thoát"
+
+#: src/xz/message.c:1224
+msgid ""
+"      --robot         use machine-parsable messages (useful for scripts)"
+msgstr ""
+"      --robot         dùng các thông điệp máy có thể phân tích\n"
+"                      (hữu dụng với scripts)"
+
+#: src/xz/message.c:1227
+msgid ""
+"      --info-memory   display the total amount of RAM and the currently "
+"active\n"
+"                      memory usage limits, and exit"
+msgstr ""
+"      --info-memory   hiển thị tổng lượng RAM và mức giới hạn tiêu dùng\n"
+"                      bộ nhớ hiện tại, rồi thoát"
+
+#: src/xz/message.c:1230
+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          hiển thị trợ giúp dạng ngắn gọ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"
+
+#: src/xz/message.c:1234
+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          hiển thị trợ giúp dạng ngắn gọn rồi thoát\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)"
+
+#: src/xz/message.c:1239
+msgid "  -V, --version       display the version number and exit"
+msgstr "  -V, --version       hiển thị số phiên bản và thoát"
+
+#: src/xz/message.c:1241
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Không có TẬP_TIN, hoặc TẬP_TIN là “-”, thì đọc đầu vào tiêu chuẩ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:1247
+#, c-format
+msgid "Report bugs to <%s> (in English or Finnish).\n"
+msgstr ""
+"Hãy báo cáo lỗi cho <%s> (bằng tiếng Anh hoặc Phần Lan).\n"
+"Thông báo lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n"
+
+#: src/xz/message.c:1249
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Trang chủ %s: <%s>.\n"
+
+#: src/xz/message.c:1253
+msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
+msgstr "ĐÂY LÀ PHIÊN BẢN PHÁT TRIỂN VÀ NÓ KHÔNG PHÙ HỢP VỚI MỤC ĐÍCH SẢN XUẤT."
+
+#: src/xz/options.c:86
+#, c-format
+msgid "%s: Options must be `name=value' pairs separated with commas"
+msgstr ""
+"%s: Các tùy chọn phải là các cặp “name=value” ngăn cách nhau bằng dấu phẩy"
+
+#: src/xz/options.c:93
+#, c-format
+msgid "%s: Invalid option name"
+msgstr "%s: Tên tùy chọn không hợp lệ"
+
+#: src/xz/options.c:113
+#, c-format
+msgid "%s: Invalid option value"
+msgstr "%s: Giá trị của tùy chọn không hợp lệ"
+
+#: src/xz/options.c:247
+#, c-format
+msgid "Unsupported LZMA1/LZMA2 preset: %s"
+msgstr "Hiện nay chưa hỗ trợ LZMA1/LZMA2: %s"
+
+#: src/xz/options.c:355
+msgid "The sum of lc and lp must not exceed 4"
+msgstr "Tổng số lượng lc và lp không được vượt quá 4"
+
+#: src/xz/options.c:359
+#, c-format
+msgid "The selected match finder requires at least nice=%<PRIu32>"
+msgstr "Bộ tìm khớp đã chọn yêu cầu mức “tốt” ít nhất là nice=%<PRIu32>"
+
+#: src/xz/suffix.c:133 src/xz/suffix.c:258
+#, c-format
+msgid ""
+"%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+msgstr ""
+"%s: Nếu --format=raw, --suffix=.SUF sẽ được yêu cầu trừ trường hợp ghi ra "
+"đầu ra tiêu chuẩn"
+
+#: src/xz/suffix.c:164
+#, c-format
+msgid "%s: Filename has an unknown suffix, skipping"
+msgstr "%s: Tên tập tin có phần hậu tố chưa biết nên bỏ qua"
+
+#: src/xz/suffix.c:185
+#, c-format
+msgid "%s: File already has `%s' suffix, skipping"
+msgstr "%s: Tập tin đã sẵn có hậu tố “%s” nên bỏ qua"
+
+#: src/xz/suffix.c:393
+#, c-format
+msgid "%s: Invalid filename suffix"
+msgstr "%s: Hậu tố tên tập tin không hợp lệ"
+
+#: src/xz/util.c:71
+#, c-format
+msgid "%s: Value is not a non-negative decimal integer"
+msgstr "%s: Giá trị không phải là số thập phân nguyên không âm"
+
+#: src/xz/util.c:113
+#, c-format
+msgid "%s: Invalid multiplier suffix"
+msgstr "%s: Hậu tố nhân tố không hợp lệ"
+
+#: src/xz/util.c:115
+msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgstr "Các hậu tố hợp lệ là “KiB” (2^10), “MiB” (2^20), và “GiB” (2^30)."
+
+#: src/xz/util.c:132
+#, c-format
+msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "Giá trị cuả tùy chọn “%s” phải nằm trong vùng [%<PRIu64>, %<PRIu64>]"
+
+#: src/xz/util.c:257
+msgid "Empty filename, skipping"
+msgstr "Tên tập tin trống rỗng nên bỏ qua"
+
+#: src/xz/util.c:271
+msgid "Compressed data cannot be read from a terminal"
+msgstr "Dữ liệu đã nén không thể đọc từ thiết bị cuối"
+
+#: src/xz/util.c:284
+msgid "Compressed data cannot be written to a terminal"
+msgstr "Dữ liệu đã nén không thể ghi ra thiết bị cuối"
+
+#: src/common/tuklib_exit.c:39
+msgid "Writing to standard output failed"
+msgstr "Gặp lỗi khi ghi dữ liệu vào đầu ra tiêu chuẩn"
+
+#: src/common/tuklib_exit.c:42
+msgid "Unknown error"
+msgstr "Lỗi chưa biết"
+
+#~ msgid ""
+#~ "      --block-size=SIZE\n"
+#~ "                      when compressing to the .xz format, start a new "
+#~ "block\n"
+#~ "                      after every SIZE bytes of input; 0=disabled "
+#~ "(default)"
+#~ msgstr ""
+#~ "      --block-size=CỠ\n"
+#~ "                      khi nén thành định dạng .xz, bắt đầu khối mới\n"
+#~ "                      sau mỗi SỐ byte đầu vào; 0=tắt (mặc định)"

+ 2 - 0
xz.mod/xz/po4a/.gitignore

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

+ 5532 - 0
xz.mod/xz/po4a/de.po

@@ -0,0 +1,5532 @@
+# XZ Utils man pages German translation
+# This file is put in the public domain.
+#
+# Mario Blättermann <[email protected]>, 2015, 2019-2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: xz 5.2.5\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2020-02-14 18:34+0200\n"
+"PO-Revision-Date: 2020-02-14 18:40+0100\n"
+"Last-Translator: Mario Blättermann <[email protected]>\n"
+"Language-Team: German <[email protected]>\n"
+"Language: de\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 19.12.2\n"
+
+#. type: TH
+#: ../src/xz/xz.1:8
+#, no-wrap
+msgid "XZ"
+msgstr "XZ"
+
+#. type: TH
+#: ../src/xz/xz.1:8
+#, no-wrap
+msgid "2020-02-01"
+msgstr "1. Februar 2020"
+
+#. type: TH
+#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
+#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#, no-wrap
+msgid "Tukaani"
+msgstr "Tukaani"
+
+#. type: TH
+#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
+#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#, no-wrap
+msgid "XZ Utils"
+msgstr "XZ-Dienstprogramme"
+
+#. type: SH
+#: ../src/xz/xz.1:10 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
+#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
+#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#, no-wrap
+msgid "NAME"
+msgstr "BEZEICHNUNG"
+
+#. type: Plain text
+#: ../src/xz/xz.1:12
+msgid ""
+"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
+"files"
+msgstr ""
+"xz, unxz, xzcat, lzma, unlzma, lzcat - .xz- und .lzma-Dateien komprimieren "
+"oder dekomprimieren"
+
+#. type: SH
+#: ../src/xz/xz.1:13 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
+#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
+#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "ÜBERSICHT"
+
+#. type: Plain text
+#: ../src/xz/xz.1:17
+msgid "B<xz> [I<option...>] [I<file...>]"
+msgstr "B<xz> [I<Option…>] [I<Datei…>]"
+
+#. type: SH
+#: ../src/xz/xz.1:18
+#, no-wrap
+msgid "COMMAND ALIASES"
+msgstr "BEFEHLSALIASE"
+
+#. type: Plain text
+#: ../src/xz/xz.1:22
+msgid "B<unxz> is equivalent to B<xz --decompress>."
+msgstr "B<unxz> ist gleichbedeutend mit B<xz --decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:26
+msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
+msgstr "B<xzcat> ist gleichbedeutend mit B<xz --decompress --stdout>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:30
+msgid "B<lzma> is equivalent to B<xz --format=lzma>."
+msgstr "B<lzma> ist gleichbedeutend mit B<xz --format=lzma>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:34
+msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
+msgstr "B<unlzma> ist gleichbedeutend mit B<xz --format=lzma --decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:38
+msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
+msgstr ""
+"B<lzcat> ist gleichbedeutend mit B<xz --format=lzma --decompress --stdout>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:50
+msgid ""
+"When writing scripts that need to decompress files, it is recommended to "
+"always use the name B<xz> with appropriate arguments (B<xz -d> or B<xz -dc>)  "
+"instead of the names B<unxz> and B<xzcat>."
+msgstr ""
+"Wenn Sie Skripte schreiben, die Dateien dekomprimieren, sollten Sie stets den "
+"Namen B<xz> mit den entsprechenden Argumenten (B<xz -d> oder B<xz -dc>) "
+"anstelle der Namen B<unxz> und B<xzcat> verwenden."
+
+#. type: SH
+#: ../src/xz/xz.1:51 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
+#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "BESCHREIBUNG"
+
+#. type: Plain text
+#: ../src/xz/xz.1:65
+msgid ""
+"B<xz> is a general-purpose data compression tool with command line syntax "
+"similar to B<gzip>(1)  and B<bzip2>(1).  The native file format is the B<.xz> "
+"format, but the legacy B<.lzma> format used by LZMA Utils and raw compressed "
+"streams with no container format headers are also supported."
+msgstr ""
+"B<xz> ist ein Allzweckwerkzeug zur Datenkompression, dessen "
+"Befehlszeilensyntax denen von B<gzip>(1) und B<bzip2>(1) ähnelt. Das native "
+"Dateiformat ist das B<.xz>-Format, aber das veraltete, von den LZMA-"
+"Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme ohne "
+"Containerformat-Header werden ebenfalls unterstützt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:87
+msgid ""
+"B<xz> compresses or decompresses each I<file> according to the selected "
+"operation mode.  If no I<files> are given or I<file> is B<->, B<xz> reads "
+"from standard input and writes the processed data to standard output.  B<xz> "
+"will refuse (display an error and skip the I<file>)  to write compressed data "
+"to standard output if it is a terminal.  Similarly, B<xz> will refuse to read "
+"compressed data from standard input if it is a terminal."
+msgstr ""
+"B<xz> komprimiert oder dekomprimierte jede I<Datei> entsprechend des "
+"gewählten Vorgangsmodus. Falls entweder B<-> oder keine Datei angegeben ist, "
+"liest B<xz> aus der Standardeingabe und leitet die verarbeiteten Dateien in "
+"die Standardausgabe. Wenn die Standardausgabe kein Terminal ist, verweigert "
+"B<xz> das Schreiben komprimierter Daten in die Standardausgabe. Dabei wird "
+"eine Fehlermeldung angezeigt und die I<Datei> übersprungen. Ebenso verweigert "
+"B<xz> das Lesen komprimierter Daten aus der Standardeingabe, wenn diese ein "
+"Terminal ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:97
+msgid ""
+"Unless B<--stdout> is specified, I<files> other than B<-> are written to a "
+"new file whose name is derived from the source I<file> name:"
+msgstr ""
+"I<Dateien>, die nicht als B<-> angegeben sind, werden in eine neue Datei "
+"geschrieben, deren Name aus den Namen der Quell-I<Datei> abgeleitet wird "
+"(außer wenn B<--stdout> angegeben ist):"
+
+#. type: IP
+#: ../src/xz/xz.1:97 ../src/xz/xz.1:103 ../src/xz/xz.1:127 ../src/xz/xz.1:132
+#: ../src/xz/xz.1:135 ../src/xz/xz.1:138 ../src/xz/xz.1:154 ../src/xz/xz.1:395
+#: ../src/xz/xz.1:398 ../src/xz/xz.1:405 ../src/xz/xz.1:621 ../src/xz/xz.1:623
+#: ../src/xz/xz.1:722 ../src/xz/xz.1:733 ../src/xz/xz.1:742 ../src/xz/xz.1:750
+#: ../src/xz/xz.1:965 ../src/xz/xz.1:974 ../src/xz/xz.1:986 ../src/xz/xz.1:1552
+#: ../src/xz/xz.1:1558 ../src/xz/xz.1:1674 ../src/xz/xz.1:1678
+#: ../src/xz/xz.1:1681 ../src/xz/xz.1:1684 ../src/xz/xz.1:1688
+#: ../src/xz/xz.1:1695 ../src/xz/xz.1:1697
+#, no-wrap
+msgid "\\(bu"
+msgstr "\\(bu"
+
+#. type: Plain text
+#: ../src/xz/xz.1:103
+msgid ""
+"When compressing, the suffix of the target file format (B<.xz> or B<.lzma>)  "
+"is appended to the source filename to get the target filename."
+msgstr ""
+"Bei der Kompression wird das Suffix des Formats der Zieldatei (B<.xz> oder B<."
+"lzma>) an den Namen der Quelldatei angehängt und so der Name der Zieldatei "
+"gebildet."
+
+#. type: Plain text
+#: ../src/xz/xz.1:117
+msgid ""
+"When decompressing, the B<.xz> or B<.lzma> suffix is removed from the "
+"filename to get the target filename.  B<xz> also recognizes the suffixes B<."
+"txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr ""
+"Bei der Dekompression wird das Suffix B<.xz> oder B<.lzma> vom Dateinamen "
+"entfernt und so der Name der Zieldatei gebildet. Außerdem erkennt B<xz> die "
+"Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:121
+msgid ""
+"If the target file already exists, an error is displayed and the I<file> is "
+"skipped."
+msgstr ""
+"Wenn die Zieldatei bereits existiert, wird eine Fehlermeldung angezeigt und "
+"die I<Datei> übersprungen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:127
+msgid ""
+"Unless writing to standard output, B<xz> will display a warning and skip the "
+"I<file> if any of the following applies:"
+msgstr ""
+"Außer beim Schreiben in die Standardausgabe zeigt B<xz> eine Warnung an und "
+"überspringt die I<Datei>, wenn eine der folgenden Bedingungen zutreffend ist:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:132
+msgid ""
+"I<File> is not a regular file.  Symbolic links are not followed, and thus "
+"they are not considered to be regular files."
+msgstr ""
+"Die I<Datei> ist keine reguläre Datei. Symbolischen Verknüpfungen wird nicht "
+"gefolgt und daher nicht zu den regulären Dateien gezählt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:135
+msgid "I<File> has more than one hard link."
+msgstr "Die I<Datei> hat mehr als eine harte Verknüpfung."
+
+#. type: Plain text
+#: ../src/xz/xz.1:138
+msgid "I<File> has setuid, setgid, or sticky bit set."
+msgstr ""
+"Für die I<Datei> ist das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:154
+msgid ""
+"The operation mode is set to compress and the I<file> already has a suffix of "
+"the target file format (B<.xz> or B<.txz> when compressing to the B<.xz> "
+"format, and B<.lzma> or B<.tlz> when compressing to the B<.lzma> format)."
+msgstr ""
+"Der Aktionsmodus wird auf Kompression gesetzt und die I<Datei> hat bereits "
+"das Suffix des Zieldateiformats (B<.xz> oder B<.txz> beim Komprimieren in das "
+"B<.xz>-Format und B<.lzma> oder B<.tlz> beim Komprimieren in das B<.lzma>-"
+"Format)."
+
+#. type: Plain text
+#: ../src/xz/xz.1:163
+msgid ""
+"The operation mode is set to decompress and the I<file> doesn't have a suffix "
+"of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, or B<.tlz>)."
+msgstr ""
+"Der Aktionsmodus wird auf Dekompression gesetzt und die I<Datei> hat nicht "
+"das Suffix eines der unterstützten Zieldateiformate (B<.xz>, B<.txz>, B<."
+"lzma> oder B<.tlz>)."
+
+#. type: Plain text
+#: ../src/xz/xz.1:178
+msgid ""
+"After successfully compressing or decompressing the I<file>, B<xz> copies the "
+"owner, group, permissions, access time, and modification time from the source "
+"I<file> to the target file.  If copying the group fails, the permissions are "
+"modified so that the target file doesn't become accessible to users who "
+"didn't have permission to access the source I<file>.  B<xz> doesn't support "
+"copying other metadata like access control lists or extended attributes yet."
+msgstr ""
+"Nach erfolgreicher Kompression oder Dekompression der I<Datei> kopiert B<xz> "
+"Eigentümer, Gruppe, Zugriffsrechte, Zugriffszeit und Änderungszeit aus der "
+"Ursprungs-I<Datei> in die Zieldatei. Sollte das Kopieren der Gruppe "
+"fehlschlagen, werden die Zugriffsrechte so angepasst, dass jenen Benutzern "
+"der Zugriff auf die Zieldatei verwehrt bleibt, die auch keinen Zugriff auf "
+"die Ursprungs-I<Datei> hatten. Das Kopieren anderer Metadaten wie "
+"Zugriffssteuerlisten oder erweiterter Attribute wird von B<xz> noch nicht "
+"unterstützt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:187
+msgid ""
+"Once the target file has been successfully closed, the source I<file> is "
+"removed unless B<--keep> was specified.  The source I<file> is never removed "
+"if the output is written to standard output."
+msgstr ""
+"Sobald die Zieldatei erfolgreich geschlossen wurde, wird die Ursprungs-"
+"I<Datei> entfernt. Dies wird durch die Option B<--keep> verhindert. Die "
+"Ursprungs-I<Datei> wird niemals entfernt, wenn die Ausgabe in die "
+"Standardausgabe geschrieben wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:199
+msgid ""
+"Sending B<SIGINFO> or B<SIGUSR1> to the B<xz> process makes it print progress "
+"information to standard error.  This has only limited use since when standard "
+"error is a terminal, using B<--verbose> will display an automatically "
+"updating progress indicator."
+msgstr ""
+"Durch Senden der Signale B<SIGINFO> oder B<SIGUSR1> an den B<xz>-Prozess "
+"werden Fortschrittsinformationen in den Fehlerkanal der Standardausgabe "
+"geleitet. Dies ist nur eingeschränkt hilfreich, wenn die "
+"Standardfehlerausgabe ein Terminal ist. Mittels B<--verbose> wird ein "
+"automatisch aktualisierter Fortschrittsanzeiger angezeigt."
+
+#. type: SS
+#: ../src/xz/xz.1:200
+#, no-wrap
+msgid "Memory usage"
+msgstr "Speicherbedarf"
+
+#. type: Plain text
+#: ../src/xz/xz.1:216
+msgid ""
+"The memory usage of B<xz> varies from a few hundred kilobytes to several "
+"gigabytes depending on the compression settings.  The settings used when "
+"compressing a file determine the memory requirements of the decompressor.  "
+"Typically the decompressor needs 5\\ % to 20\\ % of the amount of memory that "
+"the compressor needed when creating the file.  For example, decompressing a "
+"file created with B<xz -9> currently requires 65\\ MiB of memory.  Still, it "
+"is possible to have B<.xz> files that require several gigabytes of memory to "
+"decompress."
+msgstr ""
+"In Abhängigkeit von den gewählten Kompressionseinstellungen bewegt sich der "
+"Speicherverbrauch zwischen wenigen hundert Kilobyte und mehrere Gigabyte. Die "
+"Einstellungen bei der Kompression einer Datei bestimmen dabei den "
+"Speicherbedarf bei der Dekompression. Die Dekompression benötigt "
+"üblicherweise zwischen 5\\ % und 20\\ % des Speichers, der bei der "
+"Kompression der Datei erforderlich war. Beispielsweise benötigt die "
+"Dekompression einer Datei, die mit B<xz -9> komprimiert wurde, gegenwärtig "
+"etwa 65\\ MiB Speicher. Es ist jedoch auch möglich, dass B<.xz>-Dateien "
+"mehrere Gigabyte an Speicher zur Dekompression erfordern."
+
+# cripple → lahmlegen...? War mir hier zu sehr Straßenslang.
+#. type: Plain text
+#: ../src/xz/xz.1:228
+msgid ""
+"Especially users of older systems may find the possibility of very large "
+"memory usage annoying.  To prevent uncomfortable surprises, B<xz> has a built-"
+"in memory usage limiter, which is disabled by default.  While some operating "
+"systems provide ways to limit the memory usage of processes, relying on it "
+"wasn't deemed to be flexible enough (e.g. using B<ulimit>(1)  to limit "
+"virtual memory tends to cripple B<mmap>(2))."
+msgstr ""
+"Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr großer "
+"Speicherbedarf ärgerlich sein. Um unangenehme Überraschungen zu vermeiden, "
+"verfügt B<xz> über eine eingebaute Begrenzung des Speicherbedarfs, die "
+"allerdings in der Voreinstellung deaktiviert ist. Zwar verfügen einige "
+"Betriebssysteme über eingebaute Möglichkeiten zur prozessabhängigen "
+"Speicherbegrenzung, doch diese sind zu unflexibel (zum Beispiel kann "
+"B<ulimit>(1) beim Begrenzen des virtuellen Speichers B<mmap>(2) "
+"beeinträchtigen)."
+
+#. type: Plain text
+#: ../src/xz/xz.1:248
+msgid ""
+"The memory usage limiter can be enabled with the command line option B<--"
+"memlimit=>I<limit>.  Often it is more convenient to enable the limiter by "
+"default by setting the environment variable B<XZ_DEFAULTS>, e.g.\\& "
+"B<XZ_DEFAULTS=--memlimit=150MiB>.  It is possible to set the limits "
+"separately for compression and decompression by using B<--memlimit-"
+"compress=>I<limit> and B<--memlimit-decompress=>I<limit>.  Using these two "
+"options outside B<XZ_DEFAULTS> is rarely useful because a single run of B<xz> "
+"cannot do both compression and decompression and B<--memlimit=>I<limit> (or "
+"B<-M> I<limit>)  is shorter to type on the command line."
+msgstr ""
+"Die Begrenzung des Speicherbedarfs kann mit der Befehlszeilenoption B<--"
+"memlimit=>I<Begrenzung> aktiviert werden. Oft ist es jedoch bequemer, die "
+"Begrenzung durch Setzen der Umgebungsvariable B<XZ_DEFAULTS> standardmäßig zu "
+"aktivieren, zum Beispiel B<XZ_DEFAULTS=--memlimit=150MiB>. Die Begrenzungen "
+"können getrennt für Kompression und Dekompression mittels B<--memlimit-"
+"compress=>I<Begrenzung> und B<--memlimit-decompress=>I<Begrenzung> festgelegt "
+"werden. Die Verwendung einer solchen Option außerhalb der Variable "
+"B<XZ_DEFAULTS> ist kaum sinnvoll, da B<xz> in einer einzelnen Aktion nicht "
+"gleichzeitig Kompression und Dekompression ausführen kann und B<--"
+"memlimit=>I<Begrenzung> (oder B<-M> I<Begrenzung>) lässt sich einfacher in "
+"der Befehlszeile eingeben."
+
+#. type: Plain text
+#: ../src/xz/xz.1:265
+msgid ""
+"If the specified memory usage limit is exceeded when decompressing, B<xz> "
+"will display an error and decompressing the file will fail.  If the limit is "
+"exceeded when compressing, B<xz> will try to scale the settings down so that "
+"the limit is no longer exceeded (except when using B<--format=raw> or B<--no-"
+"adjust>).  This way the operation won't fail unless the limit is very small.  "
+"The scaling of the settings is done in steps that don't match the compression "
+"level presets, e.g. if the limit is only slightly less than the amount "
+"required for B<xz -9>, the settings will be scaled down only a little, not "
+"all the way down to B<xz -8>."
+msgstr ""
+"Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten "
+"wird, schlägt der Vorgang fehl und B<xz> zeigt eine Fehlermeldung an. Wird "
+"die Begrenzung bei der Kompression überschritten, dann versucht B<xz> die "
+"Einstellungen entsprechend anzupassen, außer wenn B<--format=raw> oder B<--no-"
+"adjust> angegeben ist. Auf diese Weise schlägt die Aktion nicht fehl, es sei "
+"denn, die Begrenzung wurde sehr niedrig angesetzt. Die Anpassung der "
+"Einstellungen wird schrittweise vorgenommen, allerdings entsprechen die "
+"Schritte nicht den Voreinstellungen der Kompressionsstufen. Das bedeutet, "
+"wenn beispielsweise die Begrenzung nur geringfügig unter den Anforderungen "
+"für B<xz -9> liegt, werden auch die Einstellungen nur wenig angepasst und "
+"nicht vollständig herunter zu den Werten für B<xz -8>"
+
+#. type: SS
+#: ../src/xz/xz.1:266
+#, no-wrap
+msgid "Concatenation and padding with .xz files"
+msgstr "Verkettung und Auffüllung von .xz-Dateien"
+
+#. type: Plain text
+#: ../src/xz/xz.1:274
+msgid ""
+"It is possible to concatenate B<.xz> files as is.  B<xz> will decompress such "
+"files as if they were a single B<.xz> file."
+msgstr ""
+"Es ist möglich, B<.xz>-Dateien direkt zu verketten. Solche Dateien werden von "
+"B<xz> genauso dekomprimiert wie eine einzelne B<.xz>-Datei."
+
+#. type: Plain text
+#: ../src/xz/xz.1:283
+msgid ""
+"It is possible to insert padding between the concatenated parts or after the "
+"last part.  The padding must consist of null bytes and the size of the "
+"padding must be a multiple of four bytes.  This can be useful e.g. if the B<."
+"xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr ""
+"Es ist weiterhin möglich, eine Auffüllung zwischen den verketteten Teilen "
+"oder nach dem letzten Teil einzufügen. Die Auffüllung muss aus Null-Bytes "
+"bestehen und deren Größe muss ein Vielfaches von vier Byte sein. Dies kann "
+"zum Beispiel dann vorteilhaft sein, wenn die B<.xz>-Datei auf einem "
+"Datenträger gespeichert wird, dessen Dateisystem die Dateigrößen in 512-Byte-"
+"Blöcken speichert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:287
+msgid ""
+"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+msgstr ""
+"Verkettung und Auffüllung sind für B<.lzma>-Dateien oder Rohdatenströme nicht "
+"erlaubt."
+
+#. type: SH
+#: ../src/xz/xz.1:288 ../src/xzdec/xzdec.1:61
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONEN"
+
+#. type: SS
+#: ../src/xz/xz.1:290
+#, no-wrap
+msgid "Integer suffixes and special values"
+msgstr "Ganzzahlige Suffixe und spezielle Werte"
+
+#. type: Plain text
+#: ../src/xz/xz.1:294
+msgid ""
+"In most places where an integer argument is expected, an optional suffix is "
+"supported to easily indicate large integers.  There must be no space between "
+"the integer and the suffix."
+msgstr ""
+"An den meisten Stellen, wo ein ganzzahliges Argument akzeptiert wird, kann "
+"ein optionales Suffix große Ganzzahlwerte einfacher darstellen. Zwischen "
+"Ganzzahl und dem Suffix dürfen sich keine Leerzeichen befinden."
+
+#. type: TP
+#: ../src/xz/xz.1:294
+#, no-wrap
+msgid "B<KiB>"
+msgstr "B<KiB>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:305
+msgid ""
+"Multiply the integer by 1,024 (2^10).  B<Ki>, B<k>, B<kB>, B<K>, and B<KB> "
+"are accepted as synonyms for B<KiB>."
+msgstr ""
+"multipliziert die Ganzzahl mit 1.024 (2^10). B<Ki>, B<k>, B<kB>, B<K> und "
+"B<KB> werden als Synonyme für B<KiB> akzeptiert."
+
+#. type: TP
+#: ../src/xz/xz.1:305
+#, no-wrap
+msgid "B<MiB>"
+msgstr "B<MiB>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:315
+msgid ""
+"Multiply the integer by 1,048,576 (2^20).  B<Mi>, B<m>, B<M>, and B<MB> are "
+"accepted as synonyms for B<MiB>."
+msgstr ""
+"multipliziert die Ganzzahl mit 1.048.576 (2^20). B<Mi>, B<m>, B<M> und B<MB> "
+"werden als Synonyme für B<MiB> akzeptiert."
+
+#. type: TP
+#: ../src/xz/xz.1:315
+#, no-wrap
+msgid "B<GiB>"
+msgstr "B<GiB>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:325
+msgid ""
+"Multiply the integer by 1,073,741,824 (2^30).  B<Gi>, B<g>, B<G>, and B<GB> "
+"are accepted as synonyms for B<GiB>."
+msgstr ""
+"multipliziert die Ganzzahl mit 1.073.741.824 (2^30). B<Gi>, B<g>, B<G> und "
+"B<GB> werden als Synonyme für B<GiB> akzeptiert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:330
+msgid ""
+"The special value B<max> can be used to indicate the maximum integer value "
+"supported by the option."
+msgstr ""
+"Der spezielle Wert B<max> kann dazu verwendet werden, um den von der "
+"jeweiligen Option akzeptierten maximalen Ganzzahlwert anzugeben."
+
+#. type: SS
+#: ../src/xz/xz.1:331
+#, no-wrap
+msgid "Operation mode"
+msgstr "Aktionsmodus"
+
+#. type: Plain text
+#: ../src/xz/xz.1:334
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr ""
+"Falls mehrere Aktionsmodi angegeben sind, wird der zuletzt angegebene "
+"verwendet."
+
+#. type: TP
+#: ../src/xz/xz.1:334
+#, no-wrap
+msgid "B<-z>, B<--compress>"
+msgstr "B<-z>, B<--compress>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:343
+msgid ""
+"Compress.  This is the default operation mode when no operation mode option "
+"is specified and no other operation mode is implied from the command name "
+"(for example, B<unxz> implies B<--decompress>)."
+msgstr ""
+"Kompression. Dies ist der voreingestellte Aktionsmodus, sofern keiner "
+"angegeben ist und auch kein bestimmter Modus aus dem Befehlsnamen abgeleitet "
+"werden kann (der Befehl B<unxz> impliziert zum Beispiel B<--decompress>)."
+
+#. type: TP
+#: ../src/xz/xz.1:343 ../src/xzdec/xzdec.1:62
+#, no-wrap
+msgid "B<-d>, B<--decompress>, B<--uncompress>"
+msgstr "B<-d>, B<--decompress>, B<--uncompress>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:346
+msgid "Decompress."
+msgstr "dekomprimpiert."
+
+#. type: TP
+#: ../src/xz/xz.1:346
+#, no-wrap
+msgid "B<-t>, B<--test>"
+msgstr "B<-t>, B<--test>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:355
+msgid ""
+"Test the integrity of compressed I<files>.  This option is equivalent to B<--"
+"decompress --stdout> except that the decompressed data is discarded instead "
+"of being written to standard output.  No files are created or removed."
+msgstr ""
+"prüft die Integrität der komprimierten I<Dateien>. Diese Option ist "
+"gleichbedeutend mit B<--decompress --stdout>, außer dass die dekomprimierten "
+"Daten verworfen werden, anstatt sie in die Standardausgabe zu leiten. Es "
+"werden keine Dateien erstellt oder entfernt."
+
+#. type: TP
+#: ../src/xz/xz.1:355
+#, no-wrap
+msgid "B<-l>, B<--list>"
+msgstr "B<-l>, B<--list>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:364
+msgid ""
+"Print information about compressed I<files>.  No uncompressed output is "
+"produced, and no files are created or removed.  In list mode, the program "
+"cannot read the compressed data from standard input or from other unseekable "
+"sources."
+msgstr ""
+"gibt Informationen zu den komprimierten I<Dateien> aus. Es werden keine "
+"unkomprimierten Dateien ausgegeben und keine Dateien angelegt oder entfernt. "
+"Im Listenmodus kann das Programm keine komprimierten Daten aus der "
+"Standardeingabe oder anderen nicht durchsuchbaren Quellen lesen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:379
+msgid ""
+"The default listing shows basic information about I<files>, one file per "
+"line.  To get more detailed information, use also the B<--verbose> option.  "
+"For even more information, use B<--verbose> twice, but note that this may be "
+"slow, because getting all the extra information requires many seeks.  The "
+"width of verbose output exceeds 80 characters, so piping the output to e.g."
+"\\& B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr ""
+"Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den "
+"I<Dateien> an, zeilenweise pro Datei. Detailliertere Informationen erhalten "
+"Sie mit der Option B<--verbose>. Wenn Sie diese Option zweimal angeben, "
+"werden noch ausführlichere Informationen ausgegeben. Das kann den Vorgang "
+"allerdings deutlich verlangsamen, da die Ermittlung der zusätzlichen "
+"Informationen zahlreiche Suchvorgänge erfordert. Die Breite der ausführlichen "
+"Ausgabe ist breiter als 80 Zeichen, daher könnte die Weiterleitung in "
+"beispielsweise\\& B<less\\ -S> sinnvoll sein, falls das Terminal nicht breit "
+"genug ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:386
+msgid ""
+"The exact output may vary between B<xz> versions and different locales.  For "
+"machine-readable output, B<--robot --list> should be used."
+msgstr ""
+"Die exakte Ausgabe kann in verschiedenen B<xz>-Versionen und "
+"Spracheinstellungen unterschiedlich sein. Wenn eine maschinell auswertbare "
+"Ausgabe gewünscht ist, dann sollten Sie B<--robot --list> verwenden."
+
+#. type: SS
+#: ../src/xz/xz.1:387
+#, no-wrap
+msgid "Operation modifiers"
+msgstr "Aktionsattribute"
+
+#. type: TP
+#: ../src/xz/xz.1:388 ../src/xzdec/xzdec.1:69
+#, no-wrap
+msgid "B<-k>, B<--keep>"
+msgstr "B<-k>, B<--keep>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:391
+msgid "Don't delete the input files."
+msgstr "verhindert das Löschen der Eingabedateien."
+
+#. type: TP
+#: ../src/xz/xz.1:391
+#, no-wrap
+msgid "B<-f>, B<--force>"
+msgstr "B<-f>, B<--force>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:394
+msgid "This option has several effects:"
+msgstr "Diese Option hat verschiedene Auswirkungen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:398
+msgid ""
+"If the target file already exists, delete it before compressing or "
+"decompressing."
+msgstr ""
+"Wenn die Zieldatei bereits existiert, wird diese vor der Kompression oder "
+"Dekompression gelöscht."
+
+#. type: Plain text
+#: ../src/xz/xz.1:405
+msgid ""
+"Compress or decompress even if the input is a symbolic link to a regular "
+"file, has more than one hard link, or has the setuid, setgid, or sticky bit "
+"set.  The setuid, setgid, and sticky bits are not copied to the target file."
+msgstr ""
+"Die Kompression oder Dekompression wird auch dann ausgeführt, wenn die "
+"Eingabe ein symbolischer Link zu einer regulären Datei ist, mehr als einen "
+"harten Link hat oder das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt ist. "
+"Die genannten Bits werden nicht in die Zieldatei kopiert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:430
+msgid ""
+"When used with B<--decompress> B<--stdout> and B<xz> cannot recognize the "
+"type of the source file, copy the source file as is to standard output.  This "
+"allows B<xzcat> B<--force> to be used like B<cat>(1)  for files that have not "
+"been compressed with B<xz>.  Note that in future, B<xz> might support new "
+"compressed file formats, which may make B<xz> decompress more types of files "
+"instead of copying them as is to standard output.  B<--format=>I<format> can "
+"be used to restrict B<xz> to decompress only a single file format."
+msgstr ""
+"Wenn es zusammen mit B<--decompress> und B<--stdout> verwendet wird und B<xz> "
+"den Typ der Quelldatei nicht ermitteln kann, wird die Quelldatei unverändert "
+"in die Standardausgabe kopiert. Dadurch kann B<xzcat> B<--force> für Dateien, "
+"die nicht mit B<xz> komprimiert wurden, wie B<cat>(1) verwendet werden. "
+"Zukünftig könnte B<xz> neue Dateikompressionsformate unterstützen, wodurch "
+"B<xz> mehr Dateitypen dekomprimieren kann, anstatt sie unverändert in die "
+"Standardausgabe zu kopieren. Mit der Option B<--format=>I<Format> können Sie "
+"B<xz> anweisen, nur ein einzelnes Dateiformat zu dekomprimieren."
+
+#. type: TP
+#: ../src/xz/xz.1:431 ../src/xzdec/xzdec.1:76
+#, no-wrap
+msgid "B<-c>, B<--stdout>, B<--to-stdout>"
+msgstr "B<-c>, B<--stdout>, B<--to-stdout>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:437
+msgid ""
+"Write the compressed or decompressed data to standard output instead of a "
+"file.  This implies B<--keep>."
+msgstr ""
+"schreibt die komprimierten oder dekomprimierten Daten in die Standardausgabe "
+"anstatt in eine Datei. Dies impliziert B<--keep>."
+
+#. type: TP
+#: ../src/xz/xz.1:437
+#, no-wrap
+msgid "B<--single-stream>"
+msgstr "B<--single-stream>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:446
+msgid ""
+"Decompress only the first B<.xz> stream, and silently ignore possible "
+"remaining input data following the stream.  Normally such trailing garbage "
+"makes B<xz> display an error."
+msgstr ""
+"dekomprimiert nur den ersten B<.xz>-Datenstrom und ignoriert stillschweigend "
+"weitere Eingabedaten, die möglicherweise dem Datenstrom folgen. Normalerweise "
+"führt solcher anhängender Datenmüll dazu, dass B<xz> eine Fehlermeldung "
+"ausgibt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:455
+msgid ""
+"B<xz> never decompresses more than one stream from B<.lzma> files or raw "
+"streams, but this option still makes B<xz> ignore the possible trailing data "
+"after the B<.lzma> file or raw stream."
+msgstr ""
+"B<xz> dekomprimiert niemals mehr als einen Datenstrom aus B<.lzma>-Dateien "
+"oder Rohdatenströmen, aber dennoch wird durch diese Option möglicherweise "
+"vorhandener Datenmüll nach der B<.lzma>-Datei oder dem Rohdatenstrom "
+"ignoriert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:460
+msgid ""
+"This option has no effect if the operation mode is not B<--decompress> or B<--"
+"test>."
+msgstr ""
+"Diese Option ist wirkungslos, wenn der Aktionsmodus nicht B<--decompress> "
+"oder B<--test> ist."
+
+#. type: TP
+#: ../src/xz/xz.1:460
+#, no-wrap
+msgid "B<--no-sparse>"
+msgstr "B<--no-sparse>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:472
+msgid ""
+"Disable creation of sparse files.  By default, if decompressing into a "
+"regular file, B<xz> tries to make the file sparse if the decompressed data "
+"contains long sequences of binary zeros.  It also works when writing to "
+"standard output as long as standard output is connected to a regular file and "
+"certain additional conditions are met to make it safe.  Creating sparse files "
+"may save disk space and speed up the decompression by reducing the amount of "
+"disk I/O."
+msgstr ""
+"verhindert die Erzeugung von Sparse-Dateien. In der Voreinstellung versucht "
+"B<xz>, bei der Dekompression in eine reguläre Datei eine Sparse-Datei zu "
+"erzeugen, wenn die dekomprimierten Daten lange Abfolgen von binären Nullen "
+"enthalten. Dies funktioniert auch beim Schreiben in die Standardausgabe, "
+"sofern diese in eine reguläre Datei weitergeleitet wird und bestimmte "
+"Zusatzbedingungen erfüllt sind, die die Aktion absichern. Die Erzeugung von "
+"Sparse-Dateien kann Plattenplatz sparen und beschleunigt die Dekompression "
+"durch Verringerung der Ein-/Ausgaben der Platte."
+
+#. type: TP
+#: ../src/xz/xz.1:472
+#, no-wrap
+msgid "B<-S> I<.suf>, B<--suffix=>I<.suf>"
+msgstr "B<-S> I<.suf>, B<--suffix=>I<.suf>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:484
+msgid ""
+"When compressing, use I<.suf> as the suffix for the target file instead of B<."
+"xz> or B<.lzma>.  If not writing to standard output and the source file "
+"already has the suffix I<.suf>, a warning is displayed and the file is "
+"skipped."
+msgstr ""
+"verwendet I<.suf> bei der Dekompression anstelle von B<.xz> oder B<.lzma> als "
+"Suffix für die Zieldatei. Falls nicht in die Standardausgabe geschrieben wird "
+"und die Quelldatei bereits das Suffix I<.suf> hat, wird eine Warnung "
+"angezeigt und die Datei übersprungen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:497
+msgid ""
+"When decompressing, recognize files with the suffix I<.suf> in addition to "
+"files with the B<.xz>, B<.txz>, B<.lzma>, or B<.tlz> suffix.  If the source "
+"file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr ""
+"berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen "
+"B<.xz>, B<.txz>, B<.lzma> oder B<.tlz> auch jene mit dem Suffix I<.suf>. "
+"Falls die Quelldatei das Suffix I<.suf> hat, wird dieses entfernt und so der "
+"Name der Zieldatei abgeleitet."
+
+#. type: Plain text
+#: ../src/xz/xz.1:503
+msgid ""
+"When compressing or decompressing raw streams (B<--format=raw>), the suffix "
+"must always be specified unless writing to standard output, because there is "
+"no default suffix for raw streams."
+msgstr ""
+"Beim Komprimieren oder Dekomprimieren von Rohdatenströmen mit B<--format=raw> "
+"muss das Suffix stets angegeben werden, außer wenn die Ausgabe in die "
+"Standardausgabe erfolgt. Der Grund dafür ist, dass es kein vorgegebenes "
+"Suffix für Rohdatenströme gibt."
+
+#. type: TP
+#: ../src/xz/xz.1:503
+#, no-wrap
+msgid "B<--files>[B<=>I<file>]"
+msgstr "B<--files>[B<=>I<Datei>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1:517
+msgid ""
+"Read the filenames to process from I<file>; if I<file> is omitted, filenames "
+"are read from standard input.  Filenames must be terminated with the newline "
+"character.  A dash (B<->)  is taken as a regular filename; it doesn't mean "
+"standard input.  If filenames are given also as command line arguments, they "
+"are processed before the filenames read from I<file>."
+msgstr ""
+"liest die zu verarbeitenden Dateinamen aus I<Datei>. Falls keine I<Datei> "
+"angegeben ist, werden die Dateinamen aus der Standardeingabe gelesen. "
+"Dateinamen müssen mit einem Zeilenumbruch beendet werden. Ein Bindestrich (B<-"
+">) wird als regulärer Dateiname angesehen und nicht als Standardeingabe "
+"interpretiert. Falls Dateinamen außerdem als Befehlszeilenargumente angegeben "
+"sind, werden diese vor den Dateinamen aus der I<Datei> verarbeitet."
+
+#. type: TP
+#: ../src/xz/xz.1:517
+#, no-wrap
+msgid "B<--files0>[B<=>I<file>]"
+msgstr "B<--files0>[B<=>I<Datei>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1:521
+msgid ""
+"This is identical to B<--files>[B<=>I<file>] except that each filename must "
+"be terminated with the null character."
+msgstr ""
+"Dies ist gleichbedeutend mit B<--files>[B<=>I<Datei>], außer dass jeder "
+"Dateiname mit einem Null-Zeichen abgeschlossen werden muss."
+
+#. type: SS
+#: ../src/xz/xz.1:522
+#, no-wrap
+msgid "Basic file format and compression options"
+msgstr "Grundlegende Dateiformat- und Kompressionsoptionen"
+
+#. type: TP
+#: ../src/xz/xz.1:523
+#, no-wrap
+msgid "B<-F> I<format>, B<--format=>I<format>"
+msgstr "B<-F> I<Format>, B<--format=>I<Format>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:528
+msgid "Specify the file I<format> to compress or decompress:"
+msgstr ""
+"gibt das I<Format> der zu komprimierenden oder dekomprimierenden Datei an:"
+
+#. type: TP
+#: ../src/xz/xz.1:529
+#, no-wrap
+msgid "B<auto>"
+msgstr "B<auto>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:541
+msgid ""
+"This is the default.  When compressing, B<auto> is equivalent to B<xz>.  When "
+"decompressing, the format of the input file is automatically detected.  Note "
+"that raw streams (created with B<--format=raw>)  cannot be auto-detected."
+msgstr ""
+"Dies ist die Voreinstellung. Bei der Kompression ist B<auto> gleichbedeutend "
+"mit B<xz>. Bei der Dekompression wird das Format der Eingabedatei automatisch "
+"erkannt. Beachten Sie, dass Rohdatenströme, wie sie mit B<--format=raw> "
+"erzeugt werden, nicht automatisch erkannt werden können."
+
+#. type: TP
+#: ../src/xz/xz.1:541
+#, no-wrap
+msgid "B<xz>"
+msgstr "B<xz>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:548
+msgid ""
+"Compress to the B<.xz> file format, or accept only B<.xz> files when "
+"decompressing."
+msgstr ""
+"Die Kompression erfolgt in das B<.xz>-Dateiformat oder akzeptiert nur B<.xz>-"
+"Dateien bei der Dekompression."
+
+#. type: TP
+#: ../src/xz/xz.1:548
+#, no-wrap
+msgid "B<lzma>, B<alone>"
+msgstr "B<lzma>, B<alone>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:558
+msgid ""
+"Compress to the legacy B<.lzma> file format, or accept only B<.lzma> files "
+"when decompressing.  The alternative name B<alone> is provided for backwards "
+"compatibility with LZMA Utils."
+msgstr ""
+"Die Kompression erfolgt in das veraltete B<.lzma>-Dateiformat oder akzeptiert "
+"nur B<.lzma>-Dateien bei der Dekompression. Der alternative Name B<alone> "
+"dient der Abwärtskompatibilität zu den LZMA-Dienstprogrammen."
+
+#. type: TP
+#: ../src/xz/xz.1:558
+#, no-wrap
+msgid "B<raw>"
+msgstr "B<raw>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:566
+msgid ""
+"Compress or uncompress a raw stream (no headers).  This is meant for advanced "
+"users only.  To decode raw streams, you need use B<--format=raw> and "
+"explicitly specify the filter chain, which normally would have been stored in "
+"the container headers."
+msgstr ""
+"Komprimiert oder dekomprimiert einen Rohdatenstrom (ohne Header). Diese "
+"Option ist nur für fortgeschrittene Benutzer bestimmt. Zum Dekodieren von "
+"Rohdatenströmen müssen Sie die Option B<--format=raw> verwenden und die "
+"Filterkette ausdrücklich angeben, die normalerweise in den (hier fehlenden) "
+"Container-Headern gespeichert worden wäre."
+
+#. type: TP
+#: ../src/xz/xz.1:567
+#, no-wrap
+msgid "B<-C> I<check>, B<--check=>I<check>"
+msgstr "B<-C> I<Prüfung>, B<--check=>I<Prüfung>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:582
+msgid ""
+"Specify the type of the integrity check.  The check is calculated from the "
+"uncompressed data and stored in the B<.xz> file.  This option has an effect "
+"only when compressing into the B<.xz> format; the B<.lzma> format doesn't "
+"support integrity checks.  The integrity check (if any) is verified when the "
+"B<.xz> file is decompressed."
+msgstr ""
+"gibt den Typ der Integritätsprüfung an. Die Prüfsumme wird aus den "
+"unkomprimierten Daten berechnet und in der B<.xz>-Datei gespeichert. Diese "
+"Option wird nur bei der Kompression in das B<.xz>-Format angewendet, da das "
+"B<.lzma>-Format keine Integritätsprüfungen unterstützt. Die eigentliche "
+"Integritätsprüfung erfolgt (falls möglich), wenn die B<.xz>-Datei "
+"dekomprimiert wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:586
+msgid "Supported I<check> types:"
+msgstr "Folgende Typen von I<Prüfungen> werden unterstützt:"
+
+#. type: TP
+#: ../src/xz/xz.1:587
+#, no-wrap
+msgid "B<none>"
+msgstr "B<none>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:593
+msgid ""
+"Don't calculate an integrity check at all.  This is usually a bad idea.  This "
+"can be useful when integrity of the data is verified by other means anyway."
+msgstr ""
+"führt keine Integritätsprüfung aus. Dies ist eine eher schlechte Idee. "
+"Dennoch kann es nützlich sein, wenn die Integrität der Daten auf andere Weise "
+"sichergestellt werden kann."
+
+#. type: TP
+#: ../src/xz/xz.1:593
+#, no-wrap
+msgid "B<crc32>"
+msgstr "B<crc32>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:596
+msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
+msgstr ""
+"berechnet die CRC32-Prüfsumme anhand des Polynoms aus IEEE-802.3 (Ethernet)."
+
+#. type: TP
+#: ../src/xz/xz.1:596
+#, no-wrap
+msgid "B<crc64>"
+msgstr "B<crc64>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:601
+msgid ""
+"Calculate CRC64 using the polynomial from ECMA-182.  This is the default, "
+"since it is slightly better than CRC32 at detecting damaged files and the "
+"speed difference is negligible."
+msgstr ""
+"berechnet die CRC64-Prüfsumme anhand des Polynoms aus ECMA-182. Dies ist die "
+"Voreinstellung, da beschädigte Dateien etwas besser als mit CRC32 erkannt "
+"werden und die Geschwindigkeitsdifferenz unerheblich ist."
+
+#. type: TP
+#: ../src/xz/xz.1:601
+#, no-wrap
+msgid "B<sha256>"
+msgstr "B<sha256>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:605
+msgid "Calculate SHA-256.  This is somewhat slower than CRC32 and CRC64."
+msgstr ""
+"berechnet die SHA-256-Prüfsumme. Dies ist etwas langsamer als CRC32 und CRC64."
+
+#. type: Plain text
+#: ../src/xz/xz.1:611
+msgid ""
+"Integrity of the B<.xz> headers is always verified with CRC32.  It is not "
+"possible to change or disable it."
+msgstr ""
+"Die Integrität der B<.xz>-Header wird immer mit CRC32 geprüft. Es ist nicht "
+"möglich, dies zu ändern oder zu deaktivieren."
+
+#. type: TP
+#: ../src/xz/xz.1:611
+#, no-wrap
+msgid "B<--ignore-check>"
+msgstr "B<--ignore-check>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:617
+msgid ""
+"Don't verify the integrity check of the compressed data when decompressing.  "
+"The CRC32 values in the B<.xz> headers will still be verified normally."
+msgstr ""
+"verifiziert die Integritätsprüfsumme der komprimierten Daten bei der "
+"Dekompression nicht. Die CRC32-Werte in den B<.xz>-Headern werden weiterhin "
+"normal verifiziert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:620
+msgid ""
+"B<Do not use this option unless you know what you are doing.> Possible "
+"reasons to use this option:"
+msgstr ""
+"B<Verwenden Sie diese Option nicht, außer Sie wissen, was Sie tun.> Mögliche "
+"Gründe, diese Option zu verwenden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:623
+msgid "Trying to recover data from a corrupt .xz file."
+msgstr "Versuchen, Daten aus einer beschädigten .xz-Datei wiederherzustellen."
+
+# Irgendwie ist mir »extrem gut komprimiert« hier zu diffus. Was soll »gut« hier bedeuten? Besonders stark, besonders clever, was auch immer...
+#. type: Plain text
+#: ../src/xz/xz.1:629
+msgid ""
+"Speeding up decompression.  This matters mostly with SHA-256 or with files "
+"that have compressed extremely well.  It's recommended to not use this option "
+"for this purpose unless the file integrity is verified externally in some "
+"other way."
+msgstr ""
+"Erhöhung der Geschwindigkeit bei der Dekompression. Dies macht sich meist mit "
+"SHA-256 bemerkbar, oder mit Dateien, die extrem stark komprimiert sind. Wir "
+"empfehlen, diese Option nicht für diesen Zweck zu verwenden, es sei denn, die "
+"Integrität der Datei wird extern auf andere Weise überprüft."
+
+#. type: TP
+#: ../src/xz/xz.1:630
+#, no-wrap
+msgid "B<-0> ... B<-9>"
+msgstr "B<-0> … B<-9>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:639
+msgid ""
+"Select a compression preset level.  The default is B<-6>.  If multiple preset "
+"levels are specified, the last one takes effect.  If a custom filter chain "
+"was already specified, setting a compression preset level clears the custom "
+"filter chain."
+msgstr ""
+"wählt eine der voreingestellten Kompressionsstufen, standardmäßig B<-6>. Wenn "
+"mehrere Voreinstellungsstufen angegeben sind, ist nur die zuletzt angegebene "
+"wirksam. Falls bereits eine benutzerdefinierte Filterkette angegeben wurde, "
+"wird diese durch die Festlegung der Voreinstellung geleert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:654
+msgid ""
+"The differences between the presets are more significant than with "
+"B<gzip>(1)  and B<bzip2>(1).  The selected compression settings determine the "
+"memory requirements of the decompressor, thus using a too high preset level "
+"might make it painful to decompress the file on an old system with little "
+"RAM.  Specifically, B<it's not a good idea to blindly use -9 for everything> "
+"like it often is with B<gzip>(1)  and B<bzip2>(1)."
+msgstr ""
+"Die Unterschiede zwischen den Voreinstellungsstufen sind deutlicher als bei "
+"B<gzip>(1) und B<bzip2>(1). Die gewählten Kompressionseinstellungen bestimmen "
+"den Speicherbedarf bei der Dekompression, daher ist es auf älteren Systemen "
+"mit wenig Speicher bei einer zu hoch gewählten Voreinstellung schwer, eine "
+"Datei zu dekomprimieren. Insbesondere B<ist es keine gute Idee, blindlings -9 "
+"für alles> zu verwenden, wie dies häufig mit B<gzip>(1) und B<bzip2>(1) "
+"gehandhabt wird."
+
+#. type: TP
+#: ../src/xz/xz.1:655
+#, no-wrap
+msgid "B<-0> ... B<-3>"
+msgstr "B<-0> … B<-3>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:667
+msgid ""
+"These are somewhat fast presets.  B<-0> is sometimes faster than B<gzip -9> "
+"while compressing much better.  The higher ones often have speed comparable "
+"to B<bzip2>(1)  with comparable or better compression ratio, although the "
+"results depend a lot on the type of data being compressed."
+msgstr ""
+"Diese Voreinstellungen sind recht schnell. B<-0> ist manchmal schneller als "
+"B<gzip -9>, wobei aber die Kompression wesentlich besser ist. Die schnelleren "
+"Voreinstellungen sind im Hinblick auf die Geschwindigkeit mit B<bzip2>(1) "
+"vergleichbar , mit einem ähnlichen oder besseren Kompressionsverhältnis, "
+"wobei das Ergebnis aber stark vom Typ der zu komprimierenden Daten abhängig "
+"ist."
+
+#. type: TP
+#: ../src/xz/xz.1:667
+#, no-wrap
+msgid "B<-4> ... B<-6>"
+msgstr "B<-4> … B<-6>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:681
+msgid ""
+"Good to very good compression while keeping decompressor memory usage "
+"reasonable even for old systems.  B<-6> is the default, which is usually a "
+"good choice e.g. for distributing files that need to be decompressible even "
+"on systems with only 16\\ MiB RAM.  (B<-5e> or B<-6e> may be worth "
+"considering too.  See B<--extreme>.)"
+msgstr ""
+"Gute bis sehr gute Kompression, wobei der Speicherbedarf für die "
+"Dekompression selbst auf alten Systemen akzeptabel ist. B<-6> ist die "
+"Voreinstellung, welche üblicherweise eine gute Wahl ist, zum Beispiel für die "
+"Verteilung von Dateien, die selbst noch auf Systemen mit nur 16\\ MiB "
+"Arbeitsspeicher dekomprimiert werden müssen (B<-5e> oder B<-6e> sind "
+"ebenfalls eine Überlegung wert. Siehe B<--extreme>)."
+
+#. type: TP
+#: ../src/xz/xz.1:681
+#, no-wrap
+msgid "B<-7 ... -9>"
+msgstr "B<-7 … -9>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:688
+msgid ""
+"These are like B<-6> but with higher compressor and decompressor memory "
+"requirements.  These are useful only when compressing files bigger than 8\\ "
+"MiB, 16\\ MiB, and 32\\ MiB, respectively."
+msgstr ""
+"Ähnlich wie B<-6>, aber mit einem höheren Speicherbedarf für die Kompression "
+"und Dekompression. Sie sind nur nützlich, wenn Dateien komprimiert werden "
+"sollen, die größer als 8\\ MiB, 16\\ MiB beziehungsweise 32\\ MiB sind."
+
+#. type: Plain text
+#: ../src/xz/xz.1:696
+msgid ""
+"On the same hardware, the decompression speed is approximately a constant "
+"number of bytes of compressed data per second.  In other words, the better "
+"the compression, the faster the decompression will usually be.  This also "
+"means that the amount of uncompressed output produced per second can vary a "
+"lot."
+msgstr ""
+"Auf der gleichen Hardware ist die Dekompressionsgeschwindigkeit ein nahezu "
+"konstanter Wert in Bytes komprimierter Daten pro Sekunde. Anders ausgedrückt: "
+"Je besser die Kompression, umso schneller wird üblicherweise die "
+"Dekompression sein. Das bedeutet auch, dass die Menge der pro Sekunde "
+"ausgegebenen unkomprimierten Daten stark variieren kann."
+
+#. type: Plain text
+#: ../src/xz/xz.1:698
+msgid "The following table summarises the features of the presets:"
+msgstr ""
+"Die folgende Tabelle fasst die Eigenschaften der Voreinstellungen zusammen:"
+
+#. type: tbl table
+#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623
+#, no-wrap
+msgid "Preset"
+msgstr "Voreinstellung"
+
+#. type: tbl table
+#: ../src/xz/xz.1:705 ../src/xz/xz.1:786
+#, no-wrap
+msgid "DictSize"
+msgstr "DictGröße"
+
+#. type: tbl table
+#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623
+#, no-wrap
+msgid "CompCPU"
+msgstr "KompCPU"
+
+#. type: tbl table
+#: ../src/xz/xz.1:705 ../src/xz/xz.1:786
+#, no-wrap
+msgid "CompMem"
+msgstr "KompSpeicher"
+
+#. type: tbl table
+#: ../src/xz/xz.1:705 ../src/xz/xz.1:786
+#, no-wrap
+msgid "DecMem"
+msgstr "DekSpeicher"
+
+#. type: tbl table
+#: ../src/xz/xz.1:706 ../src/xz/xz.1:2234 ../src/xz/xz.1:2259
+#: ../src/xz/xz.1:2624
+#, no-wrap
+msgid "-0"
+msgstr "-0"
+
+#. type: tbl table
+#: ../src/xz/xz.1:706 ../src/xz/xz.1:787 ../src/xz/xz.1:2234
+#, no-wrap
+msgid "256 KiB"
+msgstr "256 KiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:706 ../src/xz/xz.1:2624
+#, no-wrap
+msgid "0"
+msgstr "0"
+
+#. type: tbl table
+#: ../src/xz/xz.1:706 ../src/xz/xz.1:708 ../src/xz/xz.1:789 ../src/xz/xz.1:2259
+#, no-wrap
+msgid "3 MiB"
+msgstr "3 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:706 ../src/xz/xz.1:707 ../src/xz/xz.1:787 ../src/xz/xz.1:788
+#: ../src/xz/xz.1:2235 ../src/xz/xz.1:2236 ../src/xz/xz.1:2238
+#, no-wrap
+msgid "1 MiB"
+msgstr "1 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:707 ../src/xz/xz.1:2235 ../src/xz/xz.1:2260
+#: ../src/xz/xz.1:2625
+#, no-wrap
+msgid "-1"
+msgstr "-1"
+
+#. type: tbl table
+#: ../src/xz/xz.1:707 ../src/xz/xz.1:1582 ../src/xz/xz.1:2625
+#, no-wrap
+msgid "1"
+msgstr "1"
+
+#. type: tbl table
+#: ../src/xz/xz.1:707 ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792
+#: ../src/xz/xz.1:793 ../src/xz/xz.1:2260
+#, no-wrap
+msgid "9 MiB"
+msgstr "9 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:707 ../src/xz/xz.1:708 ../src/xz/xz.1:788 ../src/xz/xz.1:789
+#: ../src/xz/xz.1:2236 ../src/xz/xz.1:2239 ../src/xz/xz.1:2260
+#, no-wrap
+msgid "2 MiB"
+msgstr "2 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:708 ../src/xz/xz.1:2236 ../src/xz/xz.1:2261
+#: ../src/xz/xz.1:2626
+#, no-wrap
+msgid "-2"
+msgstr "-2"
+
+#. type: tbl table
+#: ../src/xz/xz.1:708 ../src/xz/xz.1:1585 ../src/xz/xz.1:2626
+#, no-wrap
+msgid "2"
+msgstr "2"
+
+#. type: tbl table
+#: ../src/xz/xz.1:708 ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2261
+#, no-wrap
+msgid "17 MiB"
+msgstr "17 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:709 ../src/xz/xz.1:2237 ../src/xz/xz.1:2262
+#: ../src/xz/xz.1:2627
+#, no-wrap
+msgid "-3"
+msgstr "-3"
+
+#. type: tbl table
+#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:787 ../src/xz/xz.1:790
+#: ../src/xz/xz.1:791 ../src/xz/xz.1:2237 ../src/xz/xz.1:2238
+#: ../src/xz/xz.1:2240
+#, no-wrap
+msgid "4 MiB"
+msgstr "4 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:709 ../src/xz/xz.1:2627
+#, no-wrap
+msgid "3"
+msgstr "3"
+
+#. type: tbl table
+#: ../src/xz/xz.1:709 ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2242
+#: ../src/xz/xz.1:2243 ../src/xz/xz.1:2262
+#, no-wrap
+msgid "32 MiB"
+msgstr "32 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791
+#, no-wrap
+msgid "5 MiB"
+msgstr "5 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:710 ../src/xz/xz.1:2238 ../src/xz/xz.1:2263
+#: ../src/xz/xz.1:2628
+#, no-wrap
+msgid "-4"
+msgstr "-4"
+
+#. type: tbl table
+#: ../src/xz/xz.1:710 ../src/xz/xz.1:1583 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1:1587 ../src/xz/xz.1:2628
+#, no-wrap
+msgid "4"
+msgstr "4"
+
+#. type: tbl table
+#: ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791 ../src/xz/xz.1:2263
+#, no-wrap
+msgid "48 MiB"
+msgstr "48 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:711 ../src/xz/xz.1:2239 ../src/xz/xz.1:2264
+#: ../src/xz/xz.1:2629
+#, no-wrap
+msgid "-5"
+msgstr "-5"
+
+#. type: tbl table
+#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793
+#: ../src/xz/xz.1:2239 ../src/xz/xz.1:2240 ../src/xz/xz.1:2241
+#, no-wrap
+msgid "8 MiB"
+msgstr "8 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:711 ../src/xz/xz.1:2629
+#, no-wrap
+msgid "5"
+msgstr "5"
+
+#. type: tbl table
+#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793
+#: ../src/xz/xz.1:2264 ../src/xz/xz.1:2265
+#, no-wrap
+msgid "94 MiB"
+msgstr "94 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:712 ../src/xz/xz.1:2240 ../src/xz/xz.1:2265
+#: ../src/xz/xz.1:2630
+#, no-wrap
+msgid "-6"
+msgstr "-6"
+
+#. type: tbl table
+#: ../src/xz/xz.1:712 ../src/xz/xz.1:713 ../src/xz/xz.1:714 ../src/xz/xz.1:715
+#: ../src/xz/xz.1:2630
+#, no-wrap
+msgid "6"
+msgstr "6"
+
+#. type: tbl table
+#: ../src/xz/xz.1:713 ../src/xz/xz.1:2241 ../src/xz/xz.1:2266
+#, no-wrap
+msgid "-7"
+msgstr "-7"
+
+#. type: tbl table
+#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2241 ../src/xz/xz.1:2242
+#: ../src/xz/xz.1:2263
+#, no-wrap
+msgid "16 MiB"
+msgstr "16 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2266
+#, no-wrap
+msgid "186 MiB"
+msgstr "186 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:714 ../src/xz/xz.1:2242 ../src/xz/xz.1:2267
+#, no-wrap
+msgid "-8"
+msgstr "-8"
+
+#. type: tbl table
+#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2267
+#, no-wrap
+msgid "370 MiB"
+msgstr "370 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:714 ../src/xz/xz.1:795
+#, no-wrap
+msgid "33 MiB"
+msgstr "33 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:715 ../src/xz/xz.1:2243 ../src/xz/xz.1:2268
+#, no-wrap
+msgid "-9"
+msgstr "-9"
+
+#. type: tbl table
+#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2243
+#, no-wrap
+msgid "64 MiB"
+msgstr "64 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2268
+#, no-wrap
+msgid "674 MiB"
+msgstr "674 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:715 ../src/xz/xz.1:796
+#, no-wrap
+msgid "65 MiB"
+msgstr "65 MiB"
+
+#. type: Plain text
+#: ../src/xz/xz.1:721
+msgid "Column descriptions:"
+msgstr "Spaltenbeschreibungen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:733
+msgid ""
+"DictSize is the LZMA2 dictionary size.  It is waste of memory to use a "
+"dictionary bigger than the size of the uncompressed file.  This is why it is "
+"good to avoid using the presets B<-7> ... B<-9> when there's no real need for "
+"them.  At B<-6> and lower, the amount of memory wasted is usually low enough "
+"to not matter."
+msgstr ""
+"DictGröße ist die Größe des LZMA2-Wörterbuchs. Es ist Speicherverschwendung, "
+"ein Wörterbuch zu verwenden, das größer als die unkomprimierte Datei ist. "
+"Daher ist es besser, die Voreinstellungen B<-7> … B<-9> zu vermeiden, falls "
+"es keinen wirklichen Bedarf dafür gibt. Mit B<-6> und weniger wird "
+"üblicherweise so wenig Speicher verschwendet, dass dies nicht ins Gewicht "
+"fällt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:742
+msgid ""
+"CompCPU is a simplified representation of the LZMA2 settings that affect "
+"compression speed.  The dictionary size affects speed too, so while CompCPU "
+"is the same for levels B<-6> ... B<-9>, higher levels still tend to be a "
+"little slower.  To get even slower and thus possibly better compression, see "
+"B<--extreme>."
+msgstr ""
+"KompCPU ist eine vereinfachte Repräsentation der LZMA2-Einstellungen, welche "
+"die Kompressionsgeschwindigkeit beeinflussen. Die Wörterbuchgröße wirkt sich "
+"ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die Stufen B<-6> "
+"bis B<-9> gleich ist, tendieren höhere Stufen dazu, etwas langsamer zu sein. "
+"Um eine noch langsamere, aber möglicherweise bessere Kompression zu erhalten, "
+"siehe B<--extreme>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:750
+msgid ""
+"CompMem contains the compressor memory requirements in the single-threaded "
+"mode.  It may vary slightly between B<xz> versions.  Memory requirements of "
+"some of the future multithreaded modes may be dramatically higher than that "
+"of the single-threaded mode."
+msgstr ""
+"KompSpeicher enthält den Speicherbedarf des Kompressors im Einzel-Thread-"
+"Modus. Dieser kann zwischen den B<xz>-Versionen leicht variieren. Der "
+"Speicherbedarf einiger der zukünftigen Multithread-Modi kann dramatisch höher "
+"sein als im Einzel-Thread-Modus."
+
+#. type: Plain text
+#: ../src/xz/xz.1:757
+msgid ""
+"DecMem contains the decompressor memory requirements.  That is, the "
+"compression settings determine the memory requirements of the decompressor.  "
+"The exact decompressor memory usage is slightly more than the LZMA2 "
+"dictionary size, but the values in the table have been rounded up to the next "
+"full MiB."
+msgstr ""
+"DekSpeicher enthält den Speicherbedarf für die Dekompression. Das bedeutet, "
+"dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression "
+"bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig "
+"größer als die Größe des LZMA2-Wörterbuchs, aber die Werte in der Tabelle "
+"wurden auf ganze MiB aufgerundet."
+
+#. type: TP
+#: ../src/xz/xz.1:758
+#, no-wrap
+msgid "B<-e>, B<--extreme>"
+msgstr "B<-e>, B<--extreme>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:767
+msgid ""
+"Use a slower variant of the selected compression preset level (B<-0> ... "
+"B<-9>)  to hopefully get a little bit better compression ratio, but with bad "
+"luck this can also make it worse.  Decompressor memory usage is not affected, "
+"but compressor memory usage increases a little at preset levels B<-0> ... "
+"B<-3>."
+msgstr ""
+"verwendet eine langsamere Variante der gewählten Kompressions-"
+"Voreinstellungsstufe (B<-0> … B<-9>), um hoffentlich ein etwas besseres "
+"Kompressionsverhältnis zu erreichen, das aber in ungünstigen Fällen auch "
+"schlechter werden kann. Der Speicherverbrauch bei der Dekompression wird "
+"dabei nicht beeinflusst, aber der Speicherverbrauch der Kompression steigt in "
+"der Voreinstellungsstufen B<-0> bis B<-3> geringfügig an."
+
+#. type: Plain text
+#: ../src/xz/xz.1:779
+msgid ""
+"Since there are two presets with dictionary sizes 4\\ MiB and 8\\ MiB, the "
+"presets B<-3e> and B<-5e> use slightly faster settings (lower CompCPU) than "
+"B<-4e> and B<-6e>, respectively.  That way no two presets are identical."
+msgstr ""
+"Da es zwei Voreinstellungen mit den Wörterbuchgrößen 4\\ MiB und 8\\ MiB "
+"gibt, verwenden die Voreinstellungsstufen B<-3e> und B<-5e> etwas schnellere "
+"Einstellungen (niedrigere KompCPU) als B<-4e> beziehungsweise B<-6e>. Auf "
+"diese Weise sind zwei Voreinstellungen nie identisch."
+
+#. type: tbl table
+#: ../src/xz/xz.1:787
+#, no-wrap
+msgid "-0e"
+msgstr "-0e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:787 ../src/xz/xz.1:788 ../src/xz/xz.1:789 ../src/xz/xz.1:791
+#: ../src/xz/xz.1:793 ../src/xz/xz.1:794 ../src/xz/xz.1:795 ../src/xz/xz.1:796
+#: ../src/xz/xz.1:2632
+#, no-wrap
+msgid "8"
+msgstr "8"
+
+#. type: tbl table
+#: ../src/xz/xz.1:788
+#, no-wrap
+msgid "-1e"
+msgstr "-1e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:788
+#, no-wrap
+msgid "13 MiB"
+msgstr "13 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:789
+#, no-wrap
+msgid "-2e"
+msgstr "-2e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:789
+#, no-wrap
+msgid "25 MiB"
+msgstr "25 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:790
+#, no-wrap
+msgid "-3e"
+msgstr "-3e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:790 ../src/xz/xz.1:792 ../src/xz/xz.1:2631
+#, no-wrap
+msgid "7"
+msgstr "7"
+
+#. type: tbl table
+#: ../src/xz/xz.1:791
+#, no-wrap
+msgid "-4e"
+msgstr "-4e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:792 ../src/xz/xz.1:2631
+#, no-wrap
+msgid "-5e"
+msgstr "-5e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:793 ../src/xz/xz.1:2632
+#, no-wrap
+msgid "-6e"
+msgstr "-6e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:794
+#, no-wrap
+msgid "-7e"
+msgstr "-7e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:795
+#, no-wrap
+msgid "-8e"
+msgstr "-8e"
+
+#. type: tbl table
+#: ../src/xz/xz.1:796
+#, no-wrap
+msgid "-9e"
+msgstr "-9e"
+
+#. type: Plain text
+#: ../src/xz/xz.1:808
+msgid ""
+"For example, there are a total of four presets that use 8\\ MiB dictionary, "
+"whose order from the fastest to the slowest is B<-5>, B<-6>, B<-5e>, and "
+"B<-6e>."
+msgstr ""
+"Zum Beispiel gibt es insgesamt vier Voreinstellungen, die ein 8\\ MiB großes "
+"Wörterbuch verwenden, deren Reihenfolge von der schnellsten zur langsamsten "
+"B<-5>, B<-6>, B<-5e> und B<-6e> ist."
+
+#. type: TP
+#: ../src/xz/xz.1:808
+#, no-wrap
+msgid "B<--fast>"
+msgstr "B<--fast>"
+
+#. type: TP
+#: ../src/xz/xz.1:811
+#, no-wrap
+msgid "B<--best>"
+msgstr "B<--best>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:822
+msgid ""
+"These are somewhat misleading aliases for B<-0> and B<-9>, respectively.  "
+"These are provided only for backwards compatibility with LZMA Utils.  Avoid "
+"using these options."
+msgstr ""
+"sind etwas irreführende Aliase für B<-0> beziehungsweise B<-9>. Sie werden "
+"nur zwecks Abwärtskompatibilität zu den LZMA-Dienstprogrammen bereitgestellt. "
+"Sie sollten diese Optionen besser nicht verwenden."
+
+#. type: TP
+#: ../src/xz/xz.1:822
+#, no-wrap
+msgid "B<--block-size=>I<size>"
+msgstr "B<--block-size=>I<Größe>"
+
+# CHECK multi-threading and makes limited random-access
+#. type: Plain text
+#: ../src/xz/xz.1:835
+msgid ""
+"When compressing to the B<.xz> format, split the input data into blocks of "
+"I<size> bytes.  The blocks are compressed independently from each other, "
+"which helps with multi-threading and makes limited random-access "
+"decompression possible.  This option is typically used to override the "
+"default block size in multi-threaded mode, but this option can be used in "
+"single-threaded mode too."
+msgstr ""
+"teilt beim Komprimieren in das B<.xz>-Format die Eingabedaten in Blöcke der "
+"angegebenen I<Größe> in Byte. Die Blöcke werden unabhängig voneinander "
+"komprimiert, was dem Multi-Threading entgegen kommt und Zufallszugriffe bei "
+"der Dekompression begrenzt. Diese Option wird typischerweise eingesetzt, um "
+"die vorgegebene Blockgröße im Multi-Thread-Modus außer Kraft zu setzen, aber "
+"sie kann auch im Einzel-Thread-Modus angewendet werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:853
+msgid ""
+"In multi-threaded mode about three times I<size> bytes will be allocated in "
+"each thread for buffering input and output.  The default I<size> is three "
+"times the LZMA2 dictionary size or 1 MiB, whichever is more.  Typically a "
+"good value is 2-4 times the size of the LZMA2 dictionary or at least 1 MiB.  "
+"Using I<size> less than the LZMA2 dictionary size is waste of RAM because "
+"then the LZMA2 dictionary buffer will never get fully used.  The sizes of the "
+"blocks are stored in the block headers, which a future version of B<xz> will "
+"use for multi-threaded decompression."
+msgstr ""
+"Im Multi-Thread-Modus wird etwa die dreifache I<Größe> in jedem Thread zur "
+"Pufferung der Ein- und Ausgabe belegt. Die vorgegebene I<Größe> ist das "
+"Dreifache der Größe des LZMA2-Wörterbuchs oder 1 MiB, je nachdem, was mehr "
+"ist. Typischerweise ist das Zwei- bis Vierfache der Größe des LZMA2-"
+"Wörterbuchs oder wenigstens 1 MB ein guter Wert. Eine I<Größe>, die geringer "
+"ist als die des LZMA2-Wörterbuchs, ist Speicherverschwendung, weil dann der "
+"LZMA2-Wörterbuchpuffer niemals vollständig genutzt werden würde. Die Größe "
+"der Blöcke wird in den Block-Headern gespeichert, die von einer zukünftigen "
+"Version von B<xz> für eine Multi-Thread-Dekompression genutzt wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:862
+msgid ""
+"In single-threaded mode no block splitting is done by default.  Setting this "
+"option doesn't affect memory usage.  No size information is stored in block "
+"headers, thus files created in single-threaded mode won't be identical to "
+"files created in multi-threaded mode.  The lack of size information also "
+"means that a future version of B<xz> won't be able decompress the files in "
+"multi-threaded mode."
+msgstr ""
+"Im Einzel-Thread-Modus werden die Blöcke standardmäßig nicht geteilt. Das "
+"Setzen dieser Option wirkt sich nicht auf den Speicherbedarf aus. In den "
+"Block-Headern werden keine Größeninformationen gespeichert, daher werden im "
+"Einzel-Thread-Modus erzeugte Dateien nicht zu den im Multi-Thread-Modus "
+"erzeugten Dateien identisch sein. Das Fehlen der Größeninformation bedingt "
+"auch, dass eine zukünftige Version von B<xz> nicht in der Lage sein wird, die "
+"Dateien im Multi-Thread-Modus zu dekomprimieren."
+
+#. type: TP
+#: ../src/xz/xz.1:862
+#, no-wrap
+msgid "B<--block-list=>I<sizes>"
+msgstr "B<--block-list=>I<Größen>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:868
+msgid ""
+"When compressing to the B<.xz> format, start a new block after the given "
+"intervals of uncompressed data."
+msgstr ""
+"beginnt bei der Kompression in das B<.xz>-Format nach den angegebenen "
+"Intervallen unkomprimierter Daten einen neuen Block."
+
+#. type: Plain text
+#: ../src/xz/xz.1:874
+msgid ""
+"The uncompressed I<sizes> of the blocks are specified as a comma-separated "
+"list.  Omitting a size (two or more consecutive commas) is a shorthand to use "
+"the size of the previous block."
+msgstr ""
+"Die unkomprimierte I<Größe> der Blöcke wird in einer durch Kommata getrennten "
+"Liste angegeben. Auslassen einer Größe (zwei oder mehr aufeinander folgende "
+"Kommata) ist ein Kürzel dafür, die Größe des vorherigen Blocks zu verwenden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:884
+msgid ""
+"If the input file is bigger than the sum of I<sizes>, the last value in "
+"I<sizes> is repeated until the end of the file.  A special value of B<0> may "
+"be used as the last value to indicate that the rest of the file should be "
+"encoded as a single block."
+msgstr ""
+"Falls die Eingabedatei größer ist als die Summe der I<Größen>, dann wird der "
+"letzte in I<Größe> angegebene Wert bis zum Ende der Datei wiederholt. Mit dem "
+"speziellen Wert B<0> können Sie angeben, dass der Rest der Datei als "
+"einzelner Block kodiert werden soll."
+
+# FIXME encoder → compressor
+#. type: Plain text
+#: ../src/xz/xz.1:899
+msgid ""
+"If one specifies I<sizes> that exceed the encoder's block size (either the "
+"default value in threaded mode or the value specified with B<--block-"
+"size=>I<size>), the encoder will create additional blocks while keeping the "
+"boundaries specified in I<sizes>.  For example, if one specifies B<--block-"
+"size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> and the input file is "
+"80 MiB, one will get 11 blocks: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, and 1 MiB."
+msgstr ""
+"Falls Sie I<Größen> angeben, welche die Blockgröße des Encoders übersteigen "
+"(entweder den Vorgabewert im Thread-Modus oder den mit B<--block-"
+"size=>I<Größe> angegebenen Wert), wird der Encoder zusätzliche Blöcke "
+"erzeugen, wobei die in den I<Größen> angegebenen Grenzen eingehalten werden. "
+"Wenn Sie zum Beispiel B<--block-size=10MiB> B<--block-"
+"list=5MiB,10MiB,8MiB,12MiB,24MiB> angeben und die Eingabedatei 80 MiB groß "
+"ist, erhalten Sie 11 Blöcke: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 und 1 MiB."
+
+#. type: Plain text
+#: ../src/xz/xz.1:905
+msgid ""
+"In multi-threaded mode the sizes of the blocks are stored in the block "
+"headers.  This isn't done in single-threaded mode, so the encoded output "
+"won't be identical to that of the multi-threaded mode."
+msgstr ""
+"Im Multi-Thread-Modus werden die Blockgrößen in den Block-Headern "
+"gespeichert. Dies geschieht im Einzel-Thread-Modus nicht, daher wird die "
+"kodierte Ausgabe zu der im Multi-Thread-Modus nicht identisch sein."
+
+#. type: TP
+#: ../src/xz/xz.1:905
+#, no-wrap
+msgid "B<--flush-timeout=>I<timeout>"
+msgstr "B<--flush-timeout=>I<Zeit>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:922
+msgid ""
+"When compressing, if more than I<timeout> milliseconds (a positive integer) "
+"has passed since the previous flush and reading more input would block, all "
+"the pending input data is flushed from the encoder and made available in the "
+"output stream.  This can be useful if B<xz> is used to compress data that is "
+"streamed over a network.  Small I<timeout> values make the data available at "
+"the receiving end with a small delay, but large I<timeout> values give better "
+"compression ratio."
+msgstr ""
+"löscht bei der Kompression die ausstehenden Daten aus dem Encoder und macht "
+"sie im Ausgabedatenstrom verfügbar, wenn mehr als die angegebene I<Zeit> in "
+"Millisekunden (als positive Ganzzahl) seit dem vorherigen Löschen vergangen "
+"ist und das Lesen weiterer Eingaben blockieren würde. Dies kann nützlich "
+"sein, wenn B<xz> zum Komprimieren von über das Netzwerk eingehenden Daten "
+"verwendet wird. Kleine I<Zeit>-Werte machen die Daten unmittelbar nach dem "
+"Empfang nach einer kurzen Verzögerung verfügbar, während große I<Zeit>-Werte "
+"ein besseres Kompressionsverhältnis bewirken."
+
+#. type: Plain text
+#: ../src/xz/xz.1:930
+msgid ""
+"This feature is disabled by default.  If this option is specified more than "
+"once, the last one takes effect.  The special I<timeout> value of B<0> can be "
+"used to explicitly disable this feature."
+msgstr ""
+"Dieses Funktionsmerkmal ist standardmäßig deaktiviert. Wenn diese Option "
+"mehrfach angegeben wird, ist die zuletzt angegebene wirksam. Für die Angabe "
+"der I<Zeit> kann der spezielle Wert B<0> verwendet werden, um dieses "
+"Funktionsmerkmal explizit zu deaktivieren."
+
+#. type: Plain text
+#: ../src/xz/xz.1:932
+msgid "This feature is not available on non-POSIX systems."
+msgstr ""
+"Dieses Funktionsmerkmal ist außerhalb von POSIX-Systemen nicht verfügbar."
+
+#.  FIXME
+#. type: Plain text
+#: ../src/xz/xz.1:940
+msgid ""
+"B<This feature is still experimental.> Currently B<xz> is unsuitable for "
+"decompressing the stream in real time due to how B<xz> does buffering."
+msgstr ""
+"B<Dieses Funktionsmerkmal ist noch experimentell.> Gegenwärtig ist B<xz> "
+"aufgrund der Art und Weise, wie B<xz> puffert, für Dekompression in Echtzeit "
+"ungeeignet."
+
+#. type: TP
+#: ../src/xz/xz.1:940
+#, no-wrap
+msgid "B<--memlimit-compress=>I<limit>"
+msgstr "B<--memlimit-compress=>I<Grenze>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:945
+msgid ""
+"Set a memory usage limit for compression.  If this option is specified "
+"multiple times, the last one takes effect."
+msgstr ""
+"legt eine Grenze für die Speichernutzung bei der Kompression fest. Wenn diese "
+"Option mehrmals angegeben wird, ist die zuletzt angegebene wirksam."
+
+#. type: Plain text
+#: ../src/xz/xz.1:960
+msgid ""
+"If the compression settings exceed the I<limit>, B<xz> will adjust the "
+"settings downwards so that the limit is no longer exceeded and display a "
+"notice that automatic adjustment was done.  Such adjustments are not made "
+"when compressing with B<--format=raw> or if B<--no-adjust> has been "
+"specified.  In those cases, an error is displayed and B<xz> will exit with "
+"exit status 1."
+msgstr ""
+"Falls die Kompressionseinstellungen die I<Grenze> überschreiten, passt B<xz> "
+"die Einstellungen nach unten an, so dass die Grenze nicht mehr überschritten "
+"wird und zeigt einen Hinweis an, dass eine automatische Anpassung vorgenommen "
+"wurde. Solche Anpassungen erfolgen nicht, wenn mit B<--format=raw> "
+"komprimiert wird oder wenn B<--no-adjust> angegeben wurde. In diesen Fällen "
+"wird eine Fehlermeldung mit dem Exit-Status 1 ausgegeben und B<xz> mit dem "
+"Exit-Status 1 beendet."
+
+#. type: Plain text
+#: ../src/xz/xz.1:964
+msgid "The I<limit> can be specified in multiple ways:"
+msgstr "Die I<Grenze> kann auf verschiedene Arten angegeben werden:"
+
+# FIXME integer suffix
+#. type: Plain text
+#: ../src/xz/xz.1:974
+msgid ""
+"The I<limit> can be an absolute value in bytes.  Using an integer suffix like "
+"B<MiB> can be useful.  Example: B<--memlimit-compress=80MiB>"
+msgstr ""
+"Die I<Grenze> kann ein absoluter Wert in Byte sein. Ein Suffix wie B<MiB> "
+"kann dabei hilfreich sein. Beispiel: B<--memlimit-compress=80MiB>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:986
+msgid ""
+"The I<limit> can be specified as a percentage of total physical memory "
+"(RAM).  This can be useful especially when setting the B<XZ_DEFAULTS> "
+"environment variable in a shell initialization script that is shared between "
+"different computers.  That way the limit is automatically bigger on systems "
+"with more memory.  Example: B<--memlimit-compress=70%>"
+msgstr ""
+"Die I<Grenze> kann als Prozentsatz des physischen Gesamtspeichers (RAM) "
+"angegeben werden. Dies ist insbesondere nützlich, wenn in einem Shell-"
+"Initialisierungsskript, das mehrere unterschiedliche Rechner gemeinsam "
+"verwenden, die Umgebungsvariable B<XZ_DEFAULTS> gesetzt ist. Auf diese Weise "
+"ist die Grenze auf Systemen mit mehr Speicher höher. Beispiel: B<--memlimit-"
+"compress=70%>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1006
+msgid ""
+"The I<limit> can be reset back to its default value by setting it to B<0>.  "
+"This is currently equivalent to setting the I<limit> to B<max> (no memory "
+"usage limit).  Once multithreading support has been implemented, there may be "
+"a difference between B<0> and B<max> for the multithreaded case, so it is "
+"recommended to use B<0> instead of B<max> until the details have been decided."
+msgstr ""
+"Mit B<0> kann die I<Grenze> auf den Standardwert zurückgesetzt werden. Dies "
+"ist gegenwärtig gleichbedeutend mit dem Setzen der I<Grenze> auf B<max> "
+"(keine Speicherbegrenzung). Sobald die Unterstützung für Multi-Threading "
+"implementiert wurde, kann es im Multi-Thread-Fall einen Unterschied zwischen "
+"B<0> und B<max> geben, daher wird empfohlen, B<0> anstelle von B<max> zu "
+"verwenden, bis die Einzelheiten hierzu geklärt sind."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1026
+msgid ""
+"For 32-bit B<xz> there is a special case: if the I<limit> would be over "
+"B<4020\\ MiB>, the I<limit> is set to B<4020\\ MiB>.  (The values B<0> and "
+"B<max> aren't affected by this.  A similar feature doesn't exist for "
+"decompression.)  This can be helpful when a 32-bit executable has access to "
+"4\\ GiB address space while hopefully doing no harm in other situations."
+msgstr ""
+"Für die 32-Bit-Version von B<xz> gibt es einen Spezialfall: Falls die Grenze "
+"über B<4020\\ MiB> liegt, wird die I<Grenze> auf B<4020\\ MiB> gesetzt (die "
+"Werte B<0> und B<max> werden hiervon nicht beeinflusst; für die Dekompression "
+"gibt es keine vergleichbare Funktion). Dies kann hilfreich sein, wenn ein 32-"
+"Bit-Executable auf einen 4\\ GiB großen Adressraum zugreifen kann, wobei wir "
+"hoffen wollen, dass es in anderen Situationen keine negativen Effekte hat."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1029
+msgid "See also the section B<Memory usage>."
+msgstr "Siehe auch den Abschnitt B<Speicherbedarf>."
+
+#. type: TP
+#: ../src/xz/xz.1:1029
+#, no-wrap
+msgid "B<--memlimit-decompress=>I<limit>"
+msgstr "B<--memlimit-decompress=>I<Grenze>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1043
+msgid ""
+"Set a memory usage limit for decompression.  This also affects the B<--list> "
+"mode.  If the operation is not possible without exceeding the I<limit>, B<xz> "
+"will display an error and decompressing the file will fail.  See B<--memlimit-"
+"compress=>I<limit> for possible ways to specify the I<limit>."
+msgstr ""
+"legt eine Begrenzung des Speicherverbrauchs für die Dekompression fest. Dies "
+"beeinflusst auch den Modus B<--list>. Falls die Aktion nicht ausführbar ist, "
+"ohne die I<Grenze> zu überschreiten, gibt B<xz> eine Fehlermeldung aus und "
+"die Dekompression wird fehlschlagen. Siehe B<--memlimit-compress=>I<Grenze> "
+"zu möglichen Wegen, die I<Grenze> anzugeben."
+
+#. type: TP
+#: ../src/xz/xz.1:1043
+#, no-wrap
+msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
+msgstr "B<-M> I<Grenze>, B<--memlimit=>I<Grenze>, B<--memory=>I<Grenze>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1047
+msgid ""
+"This is equivalent to specifying B<--memlimit-compress=>I<limit >B<--memlimit-"
+"decompress=>I<limit>."
+msgstr ""
+"Dies ist gleichbedeutend mit B<--memlimit-compress=>I<Grenze >B<--memlimit-"
+"decompress=>I<Grenze>."
+
+#. type: TP
+#: ../src/xz/xz.1:1047
+#, no-wrap
+msgid "B<--no-adjust>"
+msgstr "B<--no-adjust>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1055
+msgid ""
+"Display an error and exit if the compression settings exceed the memory usage "
+"limit.  The default is to adjust the settings downwards so that the memory "
+"usage limit is not exceeded.  Automatic adjusting is always disabled when "
+"creating raw streams (B<--format=raw>)."
+msgstr ""
+"zeigt einen Fehler an und bricht die Ausführung ab, falls die "
+"Kompressionseinstellungen die Begrenzung der Speichernutzung überschreiten. "
+"Standardmäßig werden die Einstellungen nach unten korrigiert, so dass diese "
+"Grenze nicht überschritten wird. Bei der Erzeugung von Rohdatenströmen (B<--"
+"format=raw>) ist die automatische Korrektur stets deaktiviert."
+
+#. type: TP
+#: ../src/xz/xz.1:1055
+#, no-wrap
+msgid "B<-T> I<threads>, B<--threads=>I<threads>"
+msgstr "B<-T> I<Threads>, B<--threads=>I<Threads>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1070
+msgid ""
+"Specify the number of worker threads to use.  Setting I<threads> to a special "
+"value B<0> makes B<xz> use as many threads as there are CPU cores on the "
+"system.  The actual number of threads can be less than I<threads> if the "
+"input file is not big enough for threading with the given settings or if "
+"using more threads would exceed the memory usage limit."
+msgstr ""
+"gibt die Anzahl der zu verwendenden Arbeits-Threads an. Wenn Sie I<Threads> "
+"auf einen speziellen Wert B<0> setzen, verwendet B<xz> so viele Threads, wie "
+"Prozessorkerne im System verfügbar sind. Die tatsächliche Anzahl kann "
+"geringer sein als die angegebenen I<Threads>, wenn die Eingabedatei nicht "
+"groß genug für Threading mit den gegebenen Einstellungen ist oder wenn mehr "
+"Threads die Speicherbegrenzung übersteigen würden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1077
+msgid ""
+"Currently the only threading method is to split the input into blocks and "
+"compress them independently from each other.  The default block size depends "
+"on the compression level and can be overridden with the B<--block-"
+"size=>I<size> option."
+msgstr ""
+"Die gegenwärtig einzige Threading-Methode teilt die Eingabe in Blöcke und "
+"komprimiert diese unabhängig voneinander. Die vorgegebene Blockgröße ist von "
+"der Kompressionsstufe abhängig und kann mit der Option B<--block-"
+"size=>I<Größe> außer Kraft gesetzt werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1085
+msgid ""
+"Threaded decompression hasn't been implemented yet.  It will only work on "
+"files that contain multiple blocks with size information in block headers.  "
+"All files compressed in multi-threaded mode meet this condition, but files "
+"compressed in single-threaded mode don't even if B<--block-size=>I<size> is "
+"used."
+msgstr ""
+"Eine thread-basierte Dekompression wurde bislang noch nicht implementiert. "
+"Sie wird nur bei Dateien funktionieren, die mehrere Blöcke mit "
+"Größeninformationen in deren Headern enthalten. Alle im Multi-Thread-Modus "
+"komprimierten Dateien erfüllen diese Bedingung, im Einzel-Thread-Modus "
+"komprimierte Dateien dagegen nicht, selbst wenn B<--block-size=>I<Größe> "
+"verwendet wird."
+
+#. type: SS
+#: ../src/xz/xz.1:1086 ../src/xz/xz.1:2603
+#, no-wrap
+msgid "Custom compressor filter chains"
+msgstr "Benutzerdefinierte Filterketten für die Kompression"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1097
+msgid ""
+"A custom filter chain allows specifying the compression settings in detail "
+"instead of relying on the settings associated to the presets.  When a custom "
+"filter chain is specified, preset options (B<-0> ... B<-9> and B<--extreme>)  "
+"earlier on the command line are forgotten.  If a preset option is specified "
+"after one or more custom filter chain options, the new preset takes effect "
+"and the custom filter chain options specified earlier are forgotten."
+msgstr ""
+"Eine benutzerdefinierte Filterkette ermöglicht die Angabe detaillierter "
+"Kompressionseinstellungen, anstatt von den Voreinstellungen auszugehen. Wenn "
+"eine benutzerdefinierte Filterkette angegeben wird, werden die vorher in der "
+"Befehlszeile angegebenen Voreinstellungsoptionen (B<-0> … B<-9> und B<--"
+"extreme>) außer Kraft gesetzt. Wenn eine Voreinstellungsoption nach einer "
+"oder mehreren benutzerdefinierten Filterkettenoptionen angegeben wird, dann "
+"wird die neue Voreinstellung wirksam und die zuvor angegebenen "
+"Filterkettenoptionen werden außer Kraft gesetzt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1104
+msgid ""
+"A filter chain is comparable to piping on the command line.  When "
+"compressing, the uncompressed input goes to the first filter, whose output "
+"goes to the next filter (if any).  The output of the last filter gets written "
+"to the compressed file.  The maximum number of filters in the chain is four, "
+"but typically a filter chain has only one or two filters."
+msgstr ""
+"Eine Filterkette ist mit dem Piping (der Weiterleitung) in der Befehlszeile "
+"vergleichbar. Bei der Kompression gelangt die unkomprimierte Eingabe in den "
+"ersten Filter, dessen Ausgabe wiederum in den zweiten Filter geleitet wird "
+"(sofern ein solcher vorhanden ist). Die Ausgabe des letzten Filters wird in "
+"die komprimierte Datei geschrieben. In einer Filterkette sind maximal vier "
+"Filter zulässig, aber typischerweise besteht eine Filterkette nur aus einem "
+"oder zwei Filtern."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1112
+msgid ""
+"Many filters have limitations on where they can be in the filter chain: some "
+"filters can work only as the last filter in the chain, some only as a non-"
+"last filter, and some work in any position in the chain.  Depending on the "
+"filter, this limitation is either inherent to the filter design or exists to "
+"prevent security issues."
+msgstr ""
+"Bei vielen Filtern ist die Positionierung in der Filterkette eingeschränkt: "
+"Einige Filter sind nur als letzte in der Kette verwendbar, einige können "
+"nicht als letzte Filter gesetzt werden, und andere funktionieren an "
+"beliebiger Stelle. Abhängig von dem Filter ist diese Beschränkung entweder "
+"auf das Design des Filters selbst zurückzuführen oder ist aus "
+"Sicherheitsgründen vorhanden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1120
+msgid ""
+"A custom filter chain is specified by using one or more filter options in the "
+"order they are wanted in the filter chain.  That is, the order of filter "
+"options is significant! When decoding raw streams (B<--format=raw>), the "
+"filter chain is specified in the same order as it was specified when "
+"compressing."
+msgstr ""
+"Eine benutzerdefinierte Filterkette wird durch eine oder mehrere "
+"Filteroptionen in der Reihenfolge angegeben, in der sie in der Filterkette "
+"wirksam werden sollen. Daher ist die Reihenfolge der Filteroptionen von "
+"signifikanter Bedeutung! Beim Dekodieren von Rohdatenströmen (B<--"
+"format=raw>) wird die Filterkette in der gleichen Reihenfolge angegeben wie "
+"bei der Kompression."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1129
+msgid ""
+"Filters take filter-specific I<options> as a comma-separated list.  Extra "
+"commas in I<options> are ignored.  Every option has a default value, so you "
+"need to specify only those you want to change."
+msgstr ""
+"Filter akzeptieren filterspezifische I<Optionen> in einer durch Kommata "
+"getrennten Liste. Zusätzliche Kommata in den I<Optionen> werden ignoriert. "
+"Jede Option hat einen Standardwert, daher brauchen Sie nur jene anzugeben, "
+"die Sie ändern wollen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1138
+msgid ""
+"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use B<--"
+"verbose> twice).  This works also for viewing the filter chain options used "
+"by presets."
+msgstr ""
+"Um die gesamte Filterkette und die I<Optionen> anzuzeigen, rufen Sie B<xz -"
+"vv> auf (was gleichbedeutend mit der zweimaligen Angabe von B<--verbose> "
+"ist). Dies funktioniert auch zum Betrachten der von den Voreinstellungen "
+"verwendeten Filterkettenoptionen."
+
+#. type: TP
+#: ../src/xz/xz.1:1138
+#, no-wrap
+msgid "B<--lzma1>[B<=>I<options>]"
+msgstr "B<--lzma1>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1141
+#, no-wrap
+msgid "B<--lzma2>[B<=>I<options>]"
+msgstr "B<--lzma2>[B<=>I<Optionen>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1146
+msgid ""
+"Add LZMA1 or LZMA2 filter to the filter chain.  These filters can be used "
+"only as the last filter in the chain."
+msgstr ""
+"fügt LZMA1- oder LZMA2-Filter zur Filterkette hinzu. Diese Filter können nur "
+"als letzte Filter in der Kette verwendet werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1158
+msgid ""
+"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
+"B<.lzma> file format, which supports only LZMA1.  LZMA2 is an updated version "
+"of LZMA1 to fix some practical issues of LZMA1.  The B<.xz> format uses LZMA2 "
+"and doesn't support LZMA1 at all.  Compression speed and ratios of LZMA1 and "
+"LZMA2 are practically the same."
+msgstr ""
+"LZMA1 ist ein veralteter Filter, welcher nur wegen des veralteten B<.lzma>-"
+"Dateiformats unterstützt wird, welches nur LZMA1 unterstützt. LZMA2 ist eine "
+"aktualisierte Version von LZMA1, welche einige praktische Probleme von LZMA1 "
+"behebt. Das B<.xz>-Format verwendet LZMA2 und unterstützt LZMA1 gar nicht. "
+"Kompressionsgeschwindigkeit und -verhältnis sind bei LZMA1 und LZMA2 "
+"praktisch gleich."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1161
+msgid "LZMA1 and LZMA2 share the same set of I<options>:"
+msgstr "LZMA1 und LZMA2 haben die gleichen I<Optionen>:"
+
+#. type: TP
+#: ../src/xz/xz.1:1162
+#, no-wrap
+msgid "B<preset=>I<preset>"
+msgstr "B<preset=>I<Voreinstellung>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1186
+msgid ""
+"Reset all LZMA1 or LZMA2 I<options> to I<preset>.  I<Preset> consist of an "
+"integer, which may be followed by single-letter preset modifiers.  The "
+"integer can be from B<0> to B<9>, matching the command line options B<-0> ... "
+"B<-9>.  The only supported modifier is currently B<e>, which matches B<--"
+"extreme>.  If no B<preset> is specified, the default values of LZMA1 or LZMA2 "
+"I<options> are taken from the preset B<6>."
+msgstr ""
+"setzt alle LZMA1- oder LZMA2-I<Optionen> auf die I<Voreinstellung> zurück. "
+"Diese I<Voreinstellung> wird in Form einer Ganzzahl angegeben, der ein aus "
+"einem einzelnen Buchstaben bestehender Voreinstellungsmodifikator folgen "
+"kann. Die Ganzzahl kann B<0> bis B<9> sein, entsprechend den "
+"Befehlszeilenoptionen B<-0> … B<-9>. Gegenwärtig ist B<e> der einzige "
+"unterstützte Modifikator, was B<--extreme> entspricht. Wenn keine "
+"B<Voreinstellung> angegeben ist, werden die Standardwerte der LZMA1- oder "
+"LZMA2-I<Optionen> der Voreinstellung B<6> entnommen."
+
+#. type: TP
+#: ../src/xz/xz.1:1186
+#, no-wrap
+msgid "B<dict=>I<size>"
+msgstr "B<dict=>I<Größe>"
+
+# FIXME Dezimaltrenner in 1.5 GB
+#. type: Plain text
+#: ../src/xz/xz.1:1201
+msgid ""
+"Dictionary (history buffer)  I<size> indicates how many bytes of the recently "
+"processed uncompressed data is kept in memory.  The algorithm tries to find "
+"repeating byte sequences (matches) in the uncompressed data, and replace them "
+"with references to the data currently in the dictionary.  The bigger the "
+"dictionary, the higher is the chance to find a match.  Thus, increasing "
+"dictionary I<size> usually improves compression ratio, but a dictionary "
+"bigger than the uncompressed file is waste of memory."
+msgstr ""
+"Die I<Größe> des Wörterbuchs (Chronikpuffers) gibt an, wie viel Byte der "
+"kürzlich verarbeiteten unkomprimierten Daten im Speicher behalten werden "
+"sollen. Der Algorithmus versucht, sich wiederholende Byte-Abfolgen "
+"(Übereinstimmungen) in den unkomprimierten Daten zu finden und diese durch "
+"Referenzen zu den Daten zu ersetzen, die sich gegenwärtig im Wörterbuch "
+"befinden. Je größer das Wörterbuch, umso größer ist die Chance, eine "
+"Übereinstimmung zu finden. Daher bewirkt eine Erhöhung der I<Größe> des "
+"Wörterbuchs üblicherweise ein besseres Kompressionsverhältnis, aber ein "
+"Wörterbuch, das größer ist als die unkomprimierte Datei, wäre "
+"Speicherverschwendung."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1210
+msgid ""
+"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB.  The minimum is 4\\ "
+"KiB.  The maximum for compression is currently 1.5\\ GiB (1536\\ MiB).  The "
+"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
+"which is the maximum for the LZMA1 and LZMA2 stream formats."
+msgstr ""
+"Typische Wörterbuch-I<Größen> liegen im Bereich von 64\\ KiB bis 64\\ MiB. "
+"Das Minimum ist 4\\ KiB. Das Maximum für die Kompression ist gegenwärtig "
+"1.5\\ GiB (1536\\ MiB). Bei der Dekompression wird bereits eine "
+"Wörterbuchgröße bis zu 4\\ GiB minus 1 Byte unterstützt, welche das Maximum "
+"für die LZMA1- und LZMA2-Datenstromformate ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1237
+msgid ""
+"Dictionary I<size> and match finder (I<mf>)  together determine the memory "
+"usage of the LZMA1 or LZMA2 encoder.  The same (or bigger) dictionary I<size> "
+"is required for decompressing that was used when compressing, thus the memory "
+"usage of the decoder is determined by the dictionary size used when "
+"compressing.  The B<.xz> headers store the dictionary I<size> either as "
+"2^I<n> or 2^I<n> + 2^(I<n>-1), so these I<sizes> are somewhat preferred for "
+"compression.  Other I<sizes> will get rounded up when stored in the B<.xz> "
+"headers."
+msgstr ""
+"Die I<Größe> des Wörterbuchs und der Übereinstimmungsfinder (I<Üf>) bestimmen "
+"zusammen den Speicherverbrauch des LZMA1- oder LZMA2-Kodierers. Bei der "
+"Dekompression ist ein Wörterbuch der gleichen I<Größe> (oder ein noch "
+"größeres) wie bei der Kompression erforderlich, daher wird der "
+"Speicherverbrauch des Dekoders durch die Größe des bei der Kompression "
+"verwendeten Wörterbuchs bestimmt. Die B<.xz>-Header speichern die I<Größe> "
+"des Wörterbuchs entweder als 2^I<n> oder 2^I<n> + 2^(I<n>-1), so dass diese "
+"I<Größen> für die Kompression etwas bevorzugt werden. Andere I<Größen> werden "
+"beim Speichern in den B<.xz>-Headern aufgerundet."
+
+#. type: TP
+#: ../src/xz/xz.1:1237
+#, no-wrap
+msgid "B<lc=>I<lc>"
+msgstr "B<lc=>I<lc>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1246
+msgid ""
+"Specify the number of literal context bits.  The minimum is 0 and the maximum "
+"is 4; the default is 3.  In addition, the sum of I<lc> and I<lp> must not "
+"exceed 4."
+msgstr ""
+"gibt die Anzahl der literalen Kontextbits an. Das Minimum ist 0 und das "
+"Maximum 4; der Standardwert ist 3. Außerdem darf die Summe von I<lc> und "
+"I<lp> nicht größer als 4 sein."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1251
+msgid ""
+"All bytes that cannot be encoded as matches are encoded as literals.  That "
+"is, literals are simply 8-bit bytes that are encoded one at a time."
+msgstr ""
+"Alle Bytes, die nicht als Übereinstimmungen kodiert werden können, werden als "
+"Literale kodiert. Solche Literale sind einfache 8-bit-Bytes, die jeweils für "
+"sich kodiert werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1265
+msgid ""
+"The literal coding makes an assumption that the highest I<lc> bits of the "
+"previous uncompressed byte correlate with the next byte.  E.g. in typical "
+"English text, an upper-case letter is often followed by a lower-case letter, "
+"and a lower-case letter is usually followed by another lower-case letter.  In "
+"the US-ASCII character set, the highest three bits are 010 for upper-case "
+"letters and 011 for lower-case letters.  When I<lc> is at least 3, the "
+"literal coding can take advantage of this property in the uncompressed data."
+msgstr ""
+"Bei der Literalkodierung wird angenommen, dass die höchsten I<lc>-Bits des "
+"zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum "
+"Beispiel folgt in typischen englischsprachigen Texten auf einen "
+"Großbuchstaben ein Kleinbuchstabe und auf einen Kleinbuchstaben üblicherweise "
+"wieder ein Kleinbuchstabe. Im US-ASCII-Zeichensatz sind die höchsten drei "
+"Bits 010 für Großbuchstaben und 011 für Kleinbuchstaben. Wenn I<lc> "
+"mindestens 3 ist, kann die literale Kodierung diese Eigenschaft der "
+"unkomprimierten Daten ausnutzen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1274
+msgid ""
+"The default value (3) is usually good.  If you want maximum compression, test "
+"B<lc=4>.  Sometimes it helps a little, and sometimes it makes compression "
+"worse.  If it makes it worse, test e.g.\\& B<lc=2> too."
+msgstr ""
+"Der Vorgabewert (3) ist üblicherweise gut. Wenn Sie die maximale Kompression "
+"erreichen wollen, versuchen Sie B<lc=4>. Manchmal hilft es ein wenig, doch "
+"manchmal verschlechtert es die Kompression. Im letzteren Fall versuchen Sie "
+"zum Beispiel auch\\& B<lc=2>."
+
+#. type: TP
+#: ../src/xz/xz.1:1274
+#, no-wrap
+msgid "B<lp=>I<lp>"
+msgstr "B<lp=>I<lp>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1278
+msgid ""
+"Specify the number of literal position bits.  The minimum is 0 and the "
+"maximum is 4; the default is 0."
+msgstr ""
+"gibt die Anzahl der literalen Positionsbits an. Das Minimum ist 0 und das "
+"Maximum 4; die Vorgabe ist 0."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1285
+msgid ""
+"I<Lp> affects what kind of alignment in the uncompressed data is assumed when "
+"encoding literals.  See I<pb> below for more information about alignment."
+msgstr ""
+"I<Lp> beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten beim "
+"Kodieren von Literalen angenommen wird. Siehe I<pb> weiter unten für weitere "
+"Informationen zur Ausrichtung."
+
+#. type: TP
+#: ../src/xz/xz.1:1285
+#, no-wrap
+msgid "B<pb=>I<pb>"
+msgstr "B<pb=>I<Anzahl>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1289
+msgid ""
+"Specify the number of position bits.  The minimum is 0 and the maximum is 4; "
+"the default is 2."
+msgstr ""
+"legt die Anzahl der Positions-Bits fest. Das Minimum ist 0 und das Maximum 4; "
+"Standard ist 2."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1296
+msgid ""
+"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
+"general.  The default means four-byte alignment (2^I<pb>=2^2=4), which is "
+"often a good choice when there's no better guess."
+msgstr ""
+"I<Pb> beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten "
+"generell angenommen wird. Standardmäßig wird eine Vier-Byte-Ausrichtung "
+"angenommen (2^I<pb>=2^2=4), was oft eine gute Wahl ist, wenn es keine bessere "
+"Schätzung gibt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1310
+msgid ""
+"When the aligment is known, setting I<pb> accordingly may reduce the file "
+"size a little.  E.g. with text files having one-byte alignment (US-ASCII, "
+"ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly.  For "
+"UTF-16 text, B<pb=1> is a good choice.  If the alignment is an odd number "
+"like 3 bytes, B<pb=0> might be the best choice."
+msgstr ""
+"Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von I<pb> die "
+"Dateigröße ein wenig verringern. Wenn Textdateien zum Beispiel eine Ein-Byte-"
+"Ausrichtung haben (US-ASCII, ISO-8859-*, UTF-8), kann das Setzen von B<pb=0> "
+"die Kompression etwas verbessern. Für UTF-16-Text ist B<pb=1> eine gute Wahl. "
+"Wenn die Ausrichtung eine ungerade Zahl wie beispielsweise 3 Byte ist, könnte "
+"B<pb=0> die beste Wahl sein."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1318
+msgid ""
+"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, LZMA1 "
+"and LZMA2 still slightly favor 16-byte alignment.  It might be worth taking "
+"into account when designing file formats that are likely to be often "
+"compressed with LZMA1 or LZMA2."
+msgstr ""
+"Obwohl die angenommene Ausrichtung mit I<pb> und I<lp> angepasst werden kann, "
+"bevorzugen LZMA1 und LZMA2 noch etwas die 16-Byte-Ausrichtung. Das sollten "
+"Sie vielleicht beim Design von Dateiformaten berücksichtigen, die "
+"wahrscheinlich oft mit LZMA1 oder LZMA2 komprimiert werden."
+
+#. type: TP
+#: ../src/xz/xz.1:1318
+#, no-wrap
+msgid "B<mf=>I<mf>"
+msgstr "B<mf=>I<Üf>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1333
+msgid ""
+"Match finder has a major effect on encoder speed, memory usage, and "
+"compression ratio.  Usually Hash Chain match finders are faster than Binary "
+"Tree match finders.  The default depends on the I<preset>: 0 uses B<hc3>, 1-3 "
+"use B<hc4>, and the rest use B<bt4>."
+msgstr ""
+"Der Übereinstimmungsfinder hat einen großen Einfluss auf die Geschwindigkeit "
+"des Kodierers, den Speicherbedarf und das Kompressionsverhältnis. "
+"Üblicherweise sind auf Hash-Ketten basierende Übereinstimmungsfinder "
+"schneller als jene, die mit Binärbäumen arbeiten. Die Vorgabe hängt von der "
+"I<Voreinstellungsstufe> ab: 0 verwendet B<hc3>, 1-3 verwenden B<hc4> und der "
+"Rest verwendet B<bt4>."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1339
+msgid ""
+"The following match finders are supported.  The memory usage formulas below "
+"are rough approximations, which are closest to the reality when I<dict> is a "
+"power of two."
+msgstr ""
+"Die folgenden Übereinstimmungsfinder werden unterstützt. Die Formeln zur "
+"Ermittlung des Speicherverbrauchs sind grobe Schätzungen, die der Realität am "
+"nächsten kommen, wenn I<Wörterbuch> eine Zweierpotenz ist."
+
+#. type: TP
+#: ../src/xz/xz.1:1340
+#, no-wrap
+msgid "B<hc3>"
+msgstr "B<hc3>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1343
+msgid "Hash Chain with 2- and 3-byte hashing"
+msgstr "Hash-Kette mit 2- und 3-Byte-Hashing"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1347 ../src/xz/xz.1:1396
+msgid "Minimum value for I<nice>: 3"
+msgstr "Minimalwert für I<nice>: 3"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1349 ../src/xz/xz.1:1368 ../src/xz/xz.1:1398
+#: ../src/xz/xz.1:1417
+msgid "Memory usage:"
+msgstr "Speicherbedarf:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1354
+msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
+msgstr "I<dict> * 7,5 (falls I<dict> E<lt>= 16 MiB);"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1359
+msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
+msgstr "I<dict> * 5,5 + 64 MiB (falls I<dict> E<gt> 16 MiB)"
+
+#. type: TP
+#: ../src/xz/xz.1:1359
+#, no-wrap
+msgid "B<hc4>"
+msgstr "B<hc4>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1362
+msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
+msgstr "Hash-Kette mit 2-, 3- und 4-Byte-Hashing"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1366 ../src/xz/xz.1:1415
+msgid "Minimum value for I<nice>: 4"
+msgstr "Minimaler Wert für I<nice>: 4"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1373
+msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
+msgstr "I<dict> * 7,5 (falls I<dict> E<lt>= 32 MiB ist);"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1378
+msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
+msgstr "I<dict> * 6,5 (falls I<dict> E<gt> 32 MiB ist)"
+
+#. type: TP
+#: ../src/xz/xz.1:1378
+#, no-wrap
+msgid "B<bt2>"
+msgstr "B<bt2>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1381
+msgid "Binary Tree with 2-byte hashing"
+msgstr "Binärbaum mit 2-Byte-Hashing"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1385
+msgid "Minimum value for I<nice>: 2"
+msgstr "Minimaler Wert für I<nice>: 2"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1389
+msgid "Memory usage: I<dict> * 9.5"
+msgstr "Speicherverbrauch: I<dict> * 9.5"
+
+#. type: TP
+#: ../src/xz/xz.1:1389
+#, no-wrap
+msgid "B<bt3>"
+msgstr "B<bt3>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1392
+msgid "Binary Tree with 2- and 3-byte hashing"
+msgstr "Binärbaum mit 2- und 3-Byte-Hashing"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1403
+msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
+msgstr "I<dict> * 11,5 (falls I<dict> E<lt>= 16 MiB ist);"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1408
+msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
+msgstr "I<dict> * 9,5 + 64 MiB (falls I<dict> E<gt> 16 MiB ist)"
+
+#. type: TP
+#: ../src/xz/xz.1:1408
+#, no-wrap
+msgid "B<bt4>"
+msgstr "B<bt4>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1411
+msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
+msgstr "Binärbaum mit 2-, 3- und 4-Byte-Hashing"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1422
+msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
+msgstr "I<dict> * 11,5 (falls I<dict> E<lt>= 32 MiB ist);"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1427
+msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
+msgstr "I<dict> * 10,5 (falls I<dict> E<gt> 32 MiB ist)"
+
+#. type: TP
+#: ../src/xz/xz.1:1428
+#, no-wrap
+msgid "B<mode=>I<mode>"
+msgstr "B<mode=>I<Modus>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1449
+msgid ""
+"Compression I<mode> specifies the method to analyze the data produced by the "
+"match finder.  Supported I<modes> are B<fast> and B<normal>.  The default is "
+"B<fast> for I<presets> 0-3 and B<normal> for I<presets> 4-9."
+msgstr ""
+"gibt die Methode zum Analysieren der vom Übereinstimmungsfinder gelieferten "
+"Daten an. Als I<Modi> werden B<fast> und B<normal> unterstützt. Die Vorgabe "
+"ist B<fast> für die I<Voreinstellungsstufen> 0-3 und B<normal> für die "
+"I<Voreinstellungsstufen> 4-9."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1458
+msgid ""
+"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
+"Binary Tree match finders.  This is also what the I<presets> do."
+msgstr ""
+"Üblicherweise wird B<fast> mit Hashketten-basierten Übereinstimmungsfindern "
+"und B<normal> mit Binärbaum-basierten Übereinstimmungsfindern verwendet. So "
+"machen es auch die I<Voreinstellungsstufen>."
+
+#. type: TP
+#: ../src/xz/xz.1:1458
+#, no-wrap
+msgid "B<nice=>I<nice>"
+msgstr "B<nice=>I<nice>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1465
+msgid ""
+"Specify what is considered to be a nice length for a match.  Once a match of "
+"at least I<nice> bytes is found, the algorithm stops looking for possibly "
+"better matches."
+msgstr ""
+"gibt an, was als annehmbarer Wert für eine Übereinstimmung angesehen werden "
+"kann. Wenn eine Übereinstimmung gefunden wird, die mindestens diesen I<nice>-"
+"Wert hat, sucht der Algorithmus nicht weiter nach besseren Übereinstimmungen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1472
+msgid ""
+"I<Nice> can be 2-273 bytes.  Higher values tend to give better compression "
+"ratio at the expense of speed.  The default depends on the I<preset>."
+msgstr ""
+"Der I<nice>-Wert kann 2-273 Byte sein. Höhere Werte tendieren zu einem "
+"besseren Kompressionsverhältnis, aber auf Kosten der Geschwindigkeit. Die "
+"Vorgabe hängt von der I<Voreinstellungsstufe> ab."
+
+#. type: TP
+#: ../src/xz/xz.1:1472
+#, no-wrap
+msgid "B<depth=>I<depth>"
+msgstr "B<depth=>I<Tiefe>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1482
+msgid ""
+"Specify the maximum search depth in the match finder.  The default is the "
+"special value of 0, which makes the compressor determine a reasonable "
+"I<depth> from I<mf> and I<nice>."
+msgstr ""
+"legt die maximale Suchtiefe im Übereinstimmungsfinder fest. Vorgegeben ist "
+"der spezielle Wert 0, der den Kompressor veranlasst, einen annehmbaren Wert "
+"für I<Tiefe> aus I<Üf> und I<nice>-Wert zu bestimmen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1493
+msgid ""
+"Reasonable I<depth> for Hash Chains is 4-100 and 16-1000 for Binary Trees.  "
+"Using very high values for I<depth> can make the encoder extremely slow with "
+"some files.  Avoid setting the I<depth> over 1000 unless you are prepared to "
+"interrupt the compression in case it is taking far too long."
+msgstr ""
+"Die angemessene I<Tiefe> für Hash-Ketten ist 4-100 und 16-1000 für "
+"Binärbäume. Hohe Werte für die I<Tiefe> können den Kodierer bei einigen "
+"Dateien extrem verlangsamen. Vermeiden Sie es, die I<Tiefe> über einen Wert "
+"von 100 zu setzen, oder stellen Sie sich darauf ein, die Kompression "
+"abzubrechen, wenn sie zu lange dauert."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1504
+msgid ""
+"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
+"I<size>.  LZMA1 needs also I<lc>, I<lp>, and I<pb>."
+msgstr ""
+"Beim Dekodieren von Rohdatenströmen (B<--format=raw>) benötigt LZMA2 nur die "
+"Wörterbuch-I<Größe>.  LZMA1 benötigt außerdem I<lc>, I<lp> und I<pb>."
+
+#. type: TP
+#: ../src/xz/xz.1:1504
+#, no-wrap
+msgid "B<--x86>[B<=>I<options>]"
+msgstr "B<--x86>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1507
+#, no-wrap
+msgid "B<--powerpc>[B<=>I<options>]"
+msgstr "B<--powerpc>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1509
+#, no-wrap
+msgid "B<--ia64>[B<=>I<options>]"
+msgstr "B<--ia64>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1511
+#, no-wrap
+msgid "B<--arm>[B<=>I<options>]"
+msgstr "B<--arm>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1513
+#, no-wrap
+msgid "B<--armthumb>[B<=>I<options>]"
+msgstr "B<--armthumb>[B<=>I<Optionen>]"
+
+#. type: TP
+#: ../src/xz/xz.1:1515
+#, no-wrap
+msgid "B<--sparc>[B<=>I<options>]"
+msgstr "B<--sparc>[B<=>I<Optionen>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1521
+msgid ""
+"Add a branch/call/jump (BCJ) filter to the filter chain.  These filters can "
+"be used only as a non-last filter in the filter chain."
+msgstr ""
+"fügt ein »Branch/Call/Jump«-(BCJ-)Filter zur Filterkette hinzu. Diese Filter "
+"können nicht als letzter Filter in der Filterkette verwendet werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1533
+msgid ""
+"A BCJ filter converts relative addresses in the machine code to their "
+"absolute counterparts.  This doesn't change the size of the data, but it "
+"increases redundancy, which can help LZMA2 to produce 0-15\\ % smaller B<.xz> "
+"file.  The BCJ filters are always reversible, so using a BCJ filter for wrong "
+"type of data doesn't cause any data loss, although it may make the "
+"compression ratio slightly worse."
+msgstr ""
+"Ein BCJ-Filter wandelt relative Adressen im Maschinencode in deren absolute "
+"Gegenstücke um. Die Datengröße wird dadurch nicht geändert, aber die "
+"Redundanz erhöht, was LZMA2 dabei helfen kann, eine um 10 bis 15% kleinere B<."
+"xz>-Datei zu erstellen. Die BCJ-Filter sind immer reversibel, daher "
+"verursacht die Anwendung eines BCJ-Filters auf den falschen Datentyp keinen "
+"Datenverlust, wobei aber das Kompressionsverhältnis etwas schlechter werden "
+"könnte."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1540
+msgid ""
+"It is fine to apply a BCJ filter on a whole executable; there's no need to "
+"apply it only on the executable section.  Applying a BCJ filter on an archive "
+"that contains both executable and non-executable files may or may not give "
+"good results, so it generally isn't good to blindly apply a BCJ filter when "
+"compressing binary packages for distribution."
+msgstr ""
+"Es ist in Ordnung, einen BCJ-Filter auf eine gesamte Binärdatei anzuwenden; "
+"es ist nicht nötig, dies nur auf den binären Bereich zu beschränken. Die "
+"Anwendung eines BCJ-Filters auf ein Archiv, das sowohl binäre als auch nicht-"
+"binäre Dateien enthält, kann gute Ergebnisse liefern, muss es aber nicht. "
+"Daher ist es generell nicht gut, einen BCJ-Filter blindlings anzuwenden, wenn "
+"Sie Binärpakete zwecks Weitergabe komprimieren wollen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1548
+msgid ""
+"These BCJ filters are very fast and use insignificant amount of memory.  If a "
+"BCJ filter improves compression ratio of a file, it can improve decompression "
+"speed at the same time.  This is because, on the same hardware, the "
+"decompression speed of LZMA2 is roughly a fixed number of bytes of compressed "
+"data per second."
+msgstr ""
+"Diese BCJ-Filter sind sehr schnell und erhöhen den Speicherbedarf nur "
+"unerheblich. Wenn ein BCJ-Filter das Kompressionsverhältnis einer Datei "
+"verbessert, kann er auch gleichzeitig die Dekompressionsgeschwindigkeit "
+"verbessern. Das kommt daher, dass auf der gleichen Hardware die "
+"Dekompressionsgeschwindigkeit von LZMA2 ungefähr eine feste Anzahl Byte an "
+"komprimierten Daten pro Sekunde ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1551
+msgid "These BCJ filters have known problems related to the compression ratio:"
+msgstr ""
+"Diese BCJ-Filter haben bekannte Probleme mit dem Kompressionsverhältnis:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1558
+msgid ""
+"Some types of files containing executable code (e.g. object files, static "
+"libraries, and Linux kernel modules)  have the addresses in the instructions "
+"filled with filler values.  These BCJ filters will still do the address "
+"conversion, which will make the compression worse with these files."
+msgstr ""
+"In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel "
+"Objektdateien, statische Bibliotheken und Linux-Kernelmodule), sind die "
+"Adressen in den Anweisungen mit Füllwerten gefüllt. Diese BCJ-Filter führen "
+"dennoch die Adressumwandlung aus, wodurch die Kompression bei diesen Dateien "
+"schlechter wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1565
+msgid ""
+"Applying a BCJ filter on an archive containing multiple similar executables "
+"can make the compression ratio worse than not using a BCJ filter.  This is "
+"because the BCJ filter doesn't detect the boundaries of the executable files, "
+"and doesn't reset the address conversion counter for each executable."
+msgstr ""
+"Bei der Anwendung eines BCJ-Filters auf ein Archiv, das mehrere ähnliche "
+"Binärdateien enthält, kann das Kompressionsverhältnis schlechter sein als "
+"ohne BCJ-Filter. Das kommt daher, weil der BCJ-Filter die Grenzen der "
+"Binärdateien nicht erkennt und den Zähler der Adressumwandlung für jede "
+"Binärdatei nicht zurücksetzt."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1572
+msgid ""
+"Both of the above problems will be fixed in the future in a new filter.  The "
+"old BCJ filters will still be useful in embedded systems, because the decoder "
+"of the new filter will be bigger and use more memory."
+msgstr ""
+"Beide der oben genannten Probleme werden in der Zukunft in einem neuen Filter "
+"nicht mehr auftreten. Die alten BCJ-Filter werden noch in eingebetteten "
+"Systemen von Nutzen sein, weil der Dekoder des neuen Filters größer sein und "
+"mehr Speicher beanspruchen wird."
+
+# FIXME have have
+#. type: Plain text
+#: ../src/xz/xz.1:1574
+msgid "Different instruction sets have different alignment:"
+msgstr "Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen:"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1581
+#, no-wrap
+msgid "Filter"
+msgstr "Filter"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1581
+#, no-wrap
+msgid "Alignment"
+msgstr "Ausrichtung"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1581
+#, no-wrap
+msgid "Notes"
+msgstr "Hinweise"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1582
+#, no-wrap
+msgid "x86"
+msgstr "x86"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1582
+#, no-wrap
+msgid "32-bit or 64-bit x86"
+msgstr "32-Bit oder 64-Bit x86"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1583
+#, no-wrap
+msgid "PowerPC"
+msgstr "PowerPC"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1583
+#, no-wrap
+msgid "Big endian only"
+msgstr "Nur Big Endian"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1584
+#, no-wrap
+msgid "ARM"
+msgstr "ARM"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1584 ../src/xz/xz.1:1585
+#, no-wrap
+msgid "Little endian only"
+msgstr "Nur Little Endian"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1585
+#, no-wrap
+msgid "ARM-Thumb"
+msgstr "ARM-Thumb"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1586
+#, no-wrap
+msgid "IA-64"
+msgstr "IA-64"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1586
+#, no-wrap
+msgid "16"
+msgstr "16"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1586 ../src/xz/xz.1:1587
+#, no-wrap
+msgid "Big or little endian"
+msgstr "Big oder Little Endian"
+
+#. type: tbl table
+#: ../src/xz/xz.1:1587
+#, no-wrap
+msgid "SPARC"
+msgstr "SPARC"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1602
+msgid ""
+"Since the BCJ-filtered data is usually compressed with LZMA2, the compression "
+"ratio may be improved slightly if the LZMA2 options are set to match the "
+"alignment of the selected BCJ filter.  For example, with the IA-64 filter, "
+"it's good to set B<pb=4> with LZMA2 (2^4=16).  The x86 filter is an "
+"exception; it's usually good to stick to LZMA2's default four-byte alignment "
+"when compressing x86 executables."
+msgstr ""
+"Da die BCJ-gefilterten Daten üblicherweise mit LZMA2 komprimiert sind, kann "
+"das Kompressionsverhältnis dadurch etwas verbessert werden, dass die LZMA2-"
+"Optionen so gesetzt werden, dass sie der Ausrichtung des gewählten BCJ-"
+"Filters entsprechen. Zum Beispiel ist es beim IA-64-Filter eine gute Wahl, "
+"B<pb=4> mit LZMA2 zu setzen (2^4=16). Der x86-Filter bildet dabei eine "
+"Ausnahme; Sie sollten bei der für LZMA2 voreingestellten 4-Byte-Ausrichtung "
+"bleiben, wenn Sie x86-Binärdateien komprimieren."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1605
+msgid "All BCJ filters support the same I<options>:"
+msgstr "Alle BCJ-Filter unterstützen die gleichen I<Optionen>:"
+
+#. type: TP
+#: ../src/xz/xz.1:1606
+#, no-wrap
+msgid "B<start=>I<offset>"
+msgstr "B<start=>I<Versatz>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1620
+msgid ""
+"Specify the start I<offset> that is used when converting between relative and "
+"absolute addresses.  The I<offset> must be a multiple of the alignment of the "
+"filter (see the table above).  The default is zero.  In practice, the default "
+"is good; specifying a custom I<offset> is almost never useful."
+msgstr ""
+"gibt den Start-I<Versatz> an, der bei der Umwandlung zwischen relativen und "
+"absoluten Adressen verwendet wird. Der I<Versatz> muss ein Vielfaches der "
+"Filterausrichtung sein (siehe die Tabelle oben). Der Standardwert ist 0. In "
+"der Praxis ist dieser Standardwert gut; die Angabe eines benutzerdefinierten "
+"I<Versatzes> ist fast immer unnütz."
+
+#. type: TP
+#: ../src/xz/xz.1:1621
+#, no-wrap
+msgid "B<--delta>[B<=>I<options>]"
+msgstr "B<--delta>[B<=>I<Optionen>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1626
+msgid ""
+"Add the Delta filter to the filter chain.  The Delta filter can be only used "
+"as a non-last filter in the filter chain."
+msgstr ""
+"fügt den Delta-Filter zur Filterkette hinzu. Der Delta-Filter kann nicht als "
+"letzter Filter in der Filterkette verwendet werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1635
+msgid ""
+"Currently only simple byte-wise delta calculation is supported.  It can be "
+"useful when compressing e.g. uncompressed bitmap images or uncompressed PCM "
+"audio.  However, special purpose algorithms may give significantly better "
+"results than Delta + LZMA2.  This is true especially with audio, which "
+"compresses faster and better e.g. with B<flac>(1)."
+msgstr ""
+"Gegenwärtig wird nur eine einfache, Byte-bezogene Delta-Berechnung "
+"unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten Bitmap-"
+"Bildern oder unkomprimierten PCM-Audiodaten kann es jedoch sinnvoll sein. "
+"Dennoch können für spezielle Zwecke entworfene Algorithmen deutlich bessere "
+"Ergebnisse als Delta und LZMA2 liefern. Dies trifft insbesondere auf "
+"Audiodaten zu, die sich zum Beispiel mit B<flac>(1) schneller und besser "
+"komprimieren lassen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1638
+msgid "Supported I<options>:"
+msgstr "Unterstützte I<Optionen>:"
+
+#. type: TP
+#: ../src/xz/xz.1:1639
+#, no-wrap
+msgid "B<dist=>I<distance>"
+msgstr "B<dist=>I<Abstand>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1647
+msgid ""
+"Specify the I<distance> of the delta calculation in bytes.  I<distance> must "
+"be 1-256.  The default is 1."
+msgstr ""
+"gibt den I<Abstand> der Delta-Berechnung in Byte an. Zulässige Werte für den "
+"I<Abstand> sind 1 bis 256. Der Vorgabewert ist 1."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1652
+msgid ""
+"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, the "
+"output will be A1 B1 01 02 01 02 01 02."
+msgstr ""
+"Zum Beispiel wird mit B<dist=2> und der 8-Byte-Eingabe A1 B1 A2 B3 A3 B5 A4 "
+"B7 die Ausgabe A1 B1 01 02 01 02 01 02 sein."
+
+#. type: SS
+#: ../src/xz/xz.1:1654
+#, no-wrap
+msgid "Other options"
+msgstr "Andere Optionen"
+
+#. type: TP
+#: ../src/xz/xz.1:1655 ../src/xzdec/xzdec.1:83
+#, no-wrap
+msgid "B<-q>, B<--quiet>"
+msgstr "B<-q>, B<--quiet>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1662
+msgid ""
+"Suppress warnings and notices.  Specify this twice to suppress errors too.  "
+"This option has no effect on the exit status.  That is, even if a warning was "
+"suppressed, the exit status to indicate a warning is still used."
+msgstr ""
+"unterdrückt Warnungen und Hinweise. Geben Sie dies zweimal an, um auch "
+"Fehlermeldungen zu unterdrücken. Diese Option wirkt sich nicht auf den Exit-"
+"Status aus. Das bedeutet, das selbst bei einer unterdrückten Warnung der Exit-"
+"Status zur Anzeige einer Warnung dennoch verwendet wird."
+
+#. type: TP
+#: ../src/xz/xz.1:1662
+#, no-wrap
+msgid "B<-v>, B<--verbose>"
+msgstr "B<-v>, B<--verbose>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1671
+msgid ""
+"Be verbose.  If standard error is connected to a terminal, B<xz> will display "
+"a progress indicator.  Specifying B<--verbose> twice will give even more "
+"verbose output."
+msgstr ""
+"bewirkt ausführliche Ausgaben. Wenn die Standardfehlerausgabe mit einem "
+"Terminal verbunden ist, zeigt B<xz> den Fortschritt an. Durch zweimalige "
+"Angabe von B<--verbose> wird die Ausgabe noch ausführlicher."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1673
+msgid "The progress indicator shows the following information:"
+msgstr "Der Fortschrittsanzeiger stellt die folgenden Informationen dar:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1678
+msgid ""
+"Completion percentage is shown if the size of the input file is known.  That "
+"is, the percentage cannot be shown in pipes."
+msgstr ""
+"Der Prozentsatz des Fortschritts wird angezeigt, wenn die Größe der "
+"Eingabedatei bekannt ist. Das bedeutet, dass der Prozentsatz in "
+"Weiterleitungen (Pipes) nicht angezeigt werden kann."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1681
+msgid ""
+"Amount of compressed data produced (compressing)  or consumed (decompressing)."
+msgstr ""
+"Menge der erzeugten komprimierten Daten (bei der Kompression) oder der "
+"verarbeiteten Daten (bei der Dekompression)."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1684
+msgid ""
+"Amount of uncompressed data consumed (compressing)  or produced "
+"(decompressing)."
+msgstr ""
+"Menge der verarbeiteten unkomprimierten Daten (bei der Kompression) oder der "
+"erzeugten Daten (bei der Dekompression)."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1688
+msgid ""
+"Compression ratio, which is calculated by dividing the amount of compressed "
+"data processed so far by the amount of uncompressed data processed so far."
+msgstr ""
+"Kompressionsverhältnis, das mittels Dividieren der Menge der bisher "
+"komprimierten Daten durch die Menge der bisher verarbeiteten unkomprimierten "
+"Daten ermittelt wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1695
+msgid ""
+"Compression or decompression speed.  This is measured as the amount of "
+"uncompressed data consumed (compression) or produced (decompression) per "
+"second.  It is shown after a few seconds have passed since B<xz> started "
+"processing the file."
+msgstr ""
+"Kompressions- oder Dekompressionsgeschwindigkeit. Diese wird anhand der Menge "
+"der unkomprimierten verarbeiteten Daten (bei der Kompression) oder der Menge "
+"der erzeugten Daten (bei der Dekompression) pro Sekunde gemessen. Die Anzeige "
+"startet einige Sekunden nachdem B<xz> mit der Verarbeitung der Datei begonnen "
+"hat."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1697
+msgid "Elapsed time in the format M:SS or H:MM:SS."
+msgstr "Die vergangene Zeit im Format M:SS oder H:MM:SS."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1705
+msgid ""
+"Estimated remaining time is shown only when the size of the input file is "
+"known and a couple of seconds have already passed since B<xz> started "
+"processing the file.  The time is shown in a less precise format which never "
+"has any colons, e.g. 2 min 30 s."
+msgstr ""
+"Die geschätzte verbleibende Zeit wird nur angezeigt, wenn die Größe der "
+"Eingabedatei bekannt ist und bereits einige Sekunden vergangen sind, nachdem "
+"B<xz> mit der Verarbeitung der Datei begonnen hat. Die Zeit wird in einem "
+"weniger präzisen Format ohne Doppelpunkte angezeigt, zum Beispiel 2 min 30 s."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1720
+msgid ""
+"When standard error is not a terminal, B<--verbose> will make B<xz> print the "
+"filename, compressed size, uncompressed size, compression ratio, and possibly "
+"also the speed and elapsed time on a single line to standard error after "
+"compressing or decompressing the file.  The speed and elapsed time are "
+"included only when the operation took at least a few seconds.  If the "
+"operation didn't finish, e.g. due to user interruption, also the completion "
+"percentage is printed if the size of the input file is known."
+msgstr ""
+"Wenn die Standardfehlerausgabe kein Terminal ist, schreibt B<xz> mit B<--"
+"verbose> nach dem Komprimieren oder Dekomprimieren der Datei in einer "
+"einzelnen Zeile den Dateinamen, die komprimierte Größe, die unkomprimierte "
+"Größe, das Kompressionsverhältnis und eventuell auch die Geschwindigkeit und "
+"die vergangene Zeit in die Standardfehlerausgabe. Die Geschwindigkeit und die "
+"vergangene Zeit werden nur angezeigt, wenn der Vorgang mindestens ein paar "
+"Sekunden gedauert hat. Wurde der Vorgang nicht beendet, zum Beispiel weil ihn "
+"der Benutzer abgebrochen hat, wird außerdem der Prozentsatz des erreichten "
+"Verarbeitungsfortschritts aufgenommen, sofern die Größe der Eingabedatei "
+"bekannt ist."
+
+#. type: TP
+#: ../src/xz/xz.1:1720 ../src/xzdec/xzdec.1:89
+#, no-wrap
+msgid "B<-Q>, B<--no-warn>"
+msgstr "B<-Q>, B<--no-warn>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1730
+msgid ""
+"Don't set the exit status to 2 even if a condition worth a warning was "
+"detected.  This option doesn't affect the verbosity level, thus both B<--"
+"quiet> and B<--no-warn> have to be used to not display warnings and to not "
+"alter the exit status."
+msgstr ""
+"setzt den Exit-Status nicht auf 2, selbst wenn eine Bedingung erfüllt ist, "
+"die eine Warnung gerechtfertigt hätte. Diese Option wirkt sich nicht auf die "
+"Ausführlichkeitsstufe aus, daher müssen sowohl B<--quiet> als auch B<--no-"
+"warn> angegeben werden, um einerseits keine Warnungen anzuzeigen und "
+"andererseits auch den Exit-Status nicht zu ändern."
+
+#. type: TP
+#: ../src/xz/xz.1:1730
+#, no-wrap
+msgid "B<--robot>"
+msgstr "B<--robot>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1742
+msgid ""
+"Print messages in a machine-parsable format.  This is intended to ease "
+"writing frontends that want to use B<xz> instead of liblzma, which may be the "
+"case with various scripts.  The output with this option enabled is meant to "
+"be stable across B<xz> releases.  See the section B<ROBOT MODE> for details."
+msgstr ""
+"gibt Meldungen in einem maschinenlesbaren Format aus. Dadurch soll das "
+"Schreiben von Frontends erleichtert werden, die B<xz> anstelle von Liblzma "
+"verwenden wollen, was in verschiedenen Skripten der Fall sein kann. Die "
+"Ausgabe mit dieser aktivierten Option sollte über mehrere B<xz>-"
+"Veröffentlichungen stabil sein. Details hierzu finden Sie im Abschnitt "
+"B<ROBOTER-MODUS>."
+
+#. type: TP
+#: ../src/xz/xz.1:1742
+#, no-wrap
+msgid "B<--info-memory>"
+msgstr "B<--info-memory>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1748
+msgid ""
+"Display, in human-readable format, how much physical memory (RAM)  B<xz> "
+"thinks the system has and the memory usage limits for compression and "
+"decompression, and exit successfully."
+msgstr ""
+"zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) "
+"das System nach Annahme von B<xz> hat, sowie die Speicherbedarfsbegrenzung "
+"für Kompression und Dekompression, und beendet das Programm erfolgreich."
+
+#. type: TP
+#: ../src/xz/xz.1:1748 ../src/xzdec/xzdec.1:96
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1752
+msgid ""
+"Display a help message describing the most commonly used options, and exit "
+"successfully."
+msgstr ""
+"zeigt eine Hilfemeldung mit den am häufigsten genutzten Optionen an und "
+"beendet das Programm erfolgreich."
+
+#. type: TP
+#: ../src/xz/xz.1:1752
+#, no-wrap
+msgid "B<-H>, B<--long-help>"
+msgstr "B<-H>, B<--long-help>"
+
+# FIXME Satzpunkt fehlt
+#. type: Plain text
+#: ../src/xz/xz.1:1757
+msgid ""
+"Display a help message describing all features of B<xz>, and exit successfully"
+msgstr ""
+"zeigt eine Hilfemeldung an, die alle Funktionsmerkmale von B<xz> beschreibt "
+"und beendet das Programm erfolgreich."
+
+#. type: TP
+#: ../src/xz/xz.1:1757 ../src/xzdec/xzdec.1:99
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1766
+msgid ""
+"Display the version number of B<xz> and liblzma in human readable format.  To "
+"get machine-parsable output, specify B<--robot> before B<--version>."
+msgstr ""
+"zeigt die Versionsnummer von B<xz> und Liblzma in einem menschenlesbaren "
+"Format an. Um eine maschinell auswertbare Ausgabe zu erhalten, geben Sie B<--"
+"robot> vor B<--version> an."
+
+#. type: SH
+#: ../src/xz/xz.1:1767
+#, no-wrap
+msgid "ROBOT MODE"
+msgstr "ROBOTER-MODUS"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1783
+msgid ""
+"The robot mode is activated with the B<--robot> option.  It makes the output "
+"of B<xz> easier to parse by other programs.  Currently B<--robot> is "
+"supported only together with B<--version>, B<--info-memory>, and B<--list>.  "
+"It will be supported for compression and decompression in the future."
+msgstr ""
+"Der Roboter-Modus wird mit der Option B<--robot> aktiviert. Er bewirkt, dass "
+"die Ausgabe von B<xz> leichter von anderen Programmen ausgewertet werden "
+"kann. Gegenwärtig wird B<--robot> nur zusammen mit B<--version>, B<--info-"
+"memory> und B<--list> unterstützt. In der Zukunft wird dieser Modus auch für "
+"Kompression und Dekompression unterstützt."
+
+#. type: SS
+#: ../src/xz/xz.1:1784
+#, no-wrap
+msgid "Version"
+msgstr "Version"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1789
+msgid ""
+"B<xz --robot --version> will print the version number of B<xz> and liblzma in "
+"the following format:"
+msgstr ""
+"B<xz --robot --version> gibt die Versionsnummern von B<xz> und Liblzma im "
+"folgenden Format aus:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1791
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1793
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1:1793
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1796
+msgid "Major version."
+msgstr "Hauptversion."
+
+#. type: TP
+#: ../src/xz/xz.1:1796
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1801
+msgid ""
+"Minor version.  Even numbers are stable.  Odd numbers are alpha or beta "
+"versions."
+msgstr ""
+"Unterversion. Gerade Zahlen bezeichnen eine stabile Version. Ungerade Zahlen "
+"bezeichnen Alpha- oder Betaversionen."
+
+#. type: TP
+#: ../src/xz/xz.1:1801
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1805
+msgid ""
+"Patch level for stable releases or just a counter for development releases."
+msgstr ""
+"Patch-Stufe für stabile Veröffentlichungen oder einfach nur ein Zähler für "
+"Entwicklungsversionen."
+
+#. type: TP
+#: ../src/xz/xz.1:1805
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1813
+msgid ""
+"Stability.  0 is alpha, 1 is beta, and 2 is stable.  I<S> should be always 2 "
+"when I<YYY> is even."
+msgstr ""
+"Stabilität. 0 ist Alpha, 1 ist Beta und 2 ist stabil. I<S> sollte immer 2 "
+"sein, wenn I<YYY> eine gerade Zahl ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1818
+msgid ""
+"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same "
+"XZ Utils release."
+msgstr ""
+"I<XYYYZZZS> sind in beiden Zeilen gleich, sofern B<xz> und Liblzma aus der "
+"gleichen Veröffentlichung der XZ-Utils stammen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1824
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "Beispiele: 4.999.9beta ist B<49990091> und 5.0.0 is B<50000002>."
+
+#. type: SS
+#: ../src/xz/xz.1:1825
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Informationen zur Speicherbedarfsbegrenzung"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1828
+msgid ""
+"B<xz --robot --info-memory> prints a single line with three tab-separated "
+"columns:"
+msgstr ""
+"B<xz --robot --info-memory> gibt eine einzelne Zeile mit drei durch "
+"Tabulatoren getrennten Spalten aus:"
+
+#. type: IP
+#: ../src/xz/xz.1:1828
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1830
+msgid "Total amount of physical memory (RAM) in bytes"
+msgstr "Gesamter physischer Speicher (RAM) in Byte"
+
+#. type: IP
+#: ../src/xz/xz.1:1830 ../src/xz/xz.1:1910 ../src/xz/xz.1:1947
+#: ../src/xz/xz.1:1973 ../src/xz/xz.1:2043 ../src/xz/xz.1:2070
+#, no-wrap
+msgid "2."
+msgstr "2."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1834
+msgid ""
+"Memory usage limit for compression in bytes.  A special value of zero "
+"indicates the default setting, which for single-threaded mode is the same as "
+"no limit."
+msgstr ""
+"Speicherbedarfsbegrenzung für die Kompression in Byte. Ein spezieller Wert "
+"von Null bezeichnet die Standardeinstellung, die im Einzelthread-Modus "
+"bedeutet, dass keine Begrenzung vorhanden ist."
+
+#. type: IP
+#: ../src/xz/xz.1:1834 ../src/xz/xz.1:1912 ../src/xz/xz.1:1949
+#: ../src/xz/xz.1:1975 ../src/xz/xz.1:2048 ../src/xz/xz.1:2072
+#, no-wrap
+msgid "3."
+msgstr "3."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1838
+msgid ""
+"Memory usage limit for decompression in bytes.  A special value of zero "
+"indicates the default setting, which for single-threaded mode is the same as "
+"no limit."
+msgstr ""
+"Speicherbedarfsbegrenzung für die Dekompression in Byte. Ein spezieller Wert "
+"von Null bezeichnet die Standardeinstellung, die im Einzelthread-Modus "
+"bedeutet, dass keine Begrenzung vorhanden ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1842
+msgid ""
+"In the future, the output of B<xz --robot --info-memory> may have more "
+"columns, but never more than a single line."
+msgstr ""
+"In der Zukunft könnte die Ausgabe von B<xz --robot --info-memory> weitere "
+"Spalten enthalten, aber niemals mehr als eine einzelne Zeile."
+
+#. type: SS
+#: ../src/xz/xz.1:1843
+#, no-wrap
+msgid "List mode"
+msgstr "Listenmodus"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1848
+msgid ""
+"B<xz --robot --list> uses tab-separated output.  The first column of every "
+"line has a string that indicates the type of the information found on that "
+"line:"
+msgstr ""
+"B<xz --robot --list> verwendet eine durch Tabulatoren getrennte Ausgabe. In "
+"der ersten Spalte jeder Zeile bezeichnet eine Zeichenkette den Typ der "
+"Information, die in dieser Zeile enthalten ist:"
+
+#. type: TP
+#: ../src/xz/xz.1:1848
+#, no-wrap
+msgid "B<name>"
+msgstr "B<name>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1852
+msgid ""
+"This is always the first line when starting to list a file.  The second "
+"column on the line is the filename."
+msgstr ""
+"Dies ist stets die erste Zeile, wenn eine Datei aufgelistet wird. Die zweite "
+"Spalte in der Zeile enthält den Dateinamen."
+
+#. type: TP
+#: ../src/xz/xz.1:1852
+#, no-wrap
+msgid "B<file>"
+msgstr "B<file>"
+
+# CHECK overall
+#. type: Plain text
+#: ../src/xz/xz.1:1860
+msgid ""
+"This line contains overall information about the B<.xz> file.  This line is "
+"always printed after the B<name> line."
+msgstr ""
+"Diese Zeile enthält allgemeine Informationen zur B<.xz>-Datei. Diese Zeile "
+"wird stets nach der B<name>-Zeile ausgegeben."
+
+#. type: TP
+#: ../src/xz/xz.1:1860
+#, no-wrap
+msgid "B<stream>"
+msgstr "B<stream>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1870
+msgid ""
+"This line type is used only when B<--verbose> was specified.  There are as "
+"many B<stream> lines as there are streams in the B<.xz> file."
+msgstr ""
+"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> angegeben wurde. Es "
+"gibt genau so viele B<stream>-Zeilen, wie Datenströme in der B<.xz>-Datei "
+"enthalten sind."
+
+#. type: TP
+#: ../src/xz/xz.1:1870
+#, no-wrap
+msgid "B<block>"
+msgstr "B<block>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1885
+msgid ""
+"This line type is used only when B<--verbose> was specified.  There are as "
+"many B<block> lines as there are blocks in the B<.xz> file.  The B<block> "
+"lines are shown after all the B<stream> lines; different line types are not "
+"interleaved."
+msgstr ""
+"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> angegeben wurde. Es "
+"gibt so viele B<block>-Zeilen, wie Blöcke in der B<.xz>-Datei. Die B<block>-"
+"Zeilen werden nach allen B<stream>-Zeilen angezeigt; verschiedene Zeilentypen "
+"werden nicht verschachtelt."
+
+#. type: TP
+#: ../src/xz/xz.1:1885
+#, no-wrap
+msgid "B<summary>"
+msgstr "B<summary>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1900
+msgid ""
+"This line type is used only when B<--verbose> was specified twice.  This line "
+"is printed after all B<block> lines.  Like the B<file> line, the B<summary> "
+"line contains overall information about the B<.xz> file."
+msgstr ""
+"Dieser Zeilentyp wird nur verwendet, wenn B<--verbose> zwei Mal angegeben "
+"wurde. Diese Zeile wird nach allen B<block>-Zeilen ausgegeben. Wie die "
+"B<file>-Zeile enthält die B<summary>-Zeile allgemeine Informationen zur B<."
+"xz>-Datei."
+
+#. type: TP
+#: ../src/xz/xz.1:1900
+#, no-wrap
+msgid "B<totals>"
+msgstr "B<totals>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1904
+msgid ""
+"This line is always the very last line of the list output.  It shows the "
+"total counts and sizes."
+msgstr ""
+"Diese Zeile ist immer die letzte der Listenausgabe. Sie zeigt die "
+"Gesamtanzahlen und -größen an."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1908
+msgid "The columns of the B<file> lines:"
+msgstr "Die Spalten der B<file>-Zeilen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1912
+msgid "Number of streams in the file"
+msgstr "Anzahl der Datenströme in der Datei"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1914
+msgid "Total number of blocks in the stream(s)"
+msgstr "Gesamtanzahl der Blöcke in den Datenströmen"
+
+#. type: IP
+#: ../src/xz/xz.1:1914 ../src/xz/xz.1:1951 ../src/xz/xz.1:1978
+#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2074
+#, no-wrap
+msgid "4."
+msgstr "4."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1916
+msgid "Compressed size of the file"
+msgstr "Komprimierte Größe der Datei"
+
+#. type: IP
+#: ../src/xz/xz.1:1916 ../src/xz/xz.1:1953 ../src/xz/xz.1:1980
+#: ../src/xz/xz.1:2076
+#, no-wrap
+msgid "5."
+msgstr "5."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1918
+msgid "Uncompressed size of the file"
+msgstr "Unkomprimierte Größe der Datei"
+
+#. type: IP
+#: ../src/xz/xz.1:1918 ../src/xz/xz.1:1955 ../src/xz/xz.1:1982
+#: ../src/xz/xz.1:2078
+#, no-wrap
+msgid "6."
+msgstr "6."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1924
+msgid ""
+"Compression ratio, for example B<0.123.> If ratio is over 9.999, three dashes "
+"(B<--->)  are displayed instead of the ratio."
+msgstr ""
+"Das Kompressionsverhältnis, zum Beispiel B<0.123>. Wenn das Verhältnis über "
+"9.999 liegt, werden drei Minuszeichen (B<--->) anstelle des "
+"Kompressionsverhältnisses angezeigt."
+
+#. type: IP
+#: ../src/xz/xz.1:1924 ../src/xz/xz.1:1957 ../src/xz/xz.1:1984
+#: ../src/xz/xz.1:2080
+#, no-wrap
+msgid "7."
+msgstr "7."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1937
+msgid ""
+"Comma-separated list of integrity check names.  The following strings are "
+"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and B<SHA-256>.  "
+"For unknown check types, B<Unknown->I<N> is used, where I<N> is the Check ID "
+"as a decimal number (one or two digits)."
+msgstr ""
+"Durch Kommata getrennte Liste der Namen der Integritätsprüfungen. Für die "
+"bekannten Überprüfungstypen werden folgende Zeichenketten verwendet: B<None>, "
+"B<CRC32>, B<CRC64> und B<SHA-256>. B<Unbek.>I<N> wird verwendet, wobei I<N> "
+"die Kennung der Überprüfung als Dezimalzahl angibt (ein- oder zweistellig)."
+
+#. type: IP
+#: ../src/xz/xz.1:1937 ../src/xz/xz.1:1959 ../src/xz/xz.1:1986
+#: ../src/xz/xz.1:2083
+#, no-wrap
+msgid "8."
+msgstr "8."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1939
+msgid "Total size of stream padding in the file"
+msgstr "Gesamtgröße der Datenstromauffüllung in der Datei"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1945
+msgid "The columns of the B<stream> lines:"
+msgstr "Die Spalten der B<stream>-Zeilen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1949
+msgid "Stream number (the first stream is 1)"
+msgstr "Datenstromnummer (der erste Datenstrom ist 1)"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1951
+msgid "Number of blocks in the stream"
+msgstr "Anzahl der Blöcke im Datenstrom"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1953
+msgid "Compressed start offset"
+msgstr "Komprimierte Startposition"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1955
+msgid "Uncompressed start offset"
+msgstr "Unkomprimierte Startposition"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1957
+msgid "Compressed size (does not include stream padding)"
+msgstr "Komprimierte Größe (schließt die Datenstromauffüllung nicht mit ein)"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1959 ../src/xz/xz.1:1988 ../src/xz/xz.1:2078
+msgid "Uncompressed size"
+msgstr "Unkomprimierte Größe"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1990
+msgid "Compression ratio"
+msgstr "Kompressionsverhältnis"
+
+#. type: IP
+#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1988 ../src/xz/xz.1:2085
+#, no-wrap
+msgid "9."
+msgstr "9."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1992
+msgid "Name of the integrity check"
+msgstr "Name der Integritätsprüfung"
+
+#. type: IP
+#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1990 ../src/xz/xz.1:2101
+#, no-wrap
+msgid "10."
+msgstr "10."
+
+#. type: Plain text
+#: ../src/xz/xz.1:1965
+msgid "Size of stream padding"
+msgstr "Größe der Datenstromauffüllung"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1971
+msgid "The columns of the B<block> lines:"
+msgstr "Die Spalten der B<block>-Zeilen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1975
+msgid "Number of the stream containing this block"
+msgstr "Anzahl der in diesem Block enthaltenen Datenströme"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1978
+msgid ""
+"Block number relative to the beginning of the stream (the first block is 1)"
+msgstr "Blocknummer relativ zum Anfang des Datenstroms (der erste Block ist 1)"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1980
+msgid "Block number relative to the beginning of the file"
+msgstr "Blocknummer relativ zum Anfang der Datei"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1982
+msgid "Compressed start offset relative to the beginning of the file"
+msgstr "Komprimierter Startversatz relativ zum Beginn der Datei"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1984
+msgid "Uncompressed start offset relative to the beginning of the file"
+msgstr "Unkomprimierter Startversatz relativ zum Beginn der Datei"
+
+#. type: Plain text
+#: ../src/xz/xz.1:1986
+msgid "Total compressed size of the block (includes headers)"
+msgstr "Komprimierte Gesamtgröße des Blocks (einschließlich Header)"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2004
+msgid ""
+"If B<--verbose> was specified twice, additional columns are included on the "
+"B<block> lines.  These are not displayed with a single B<--verbose>, because "
+"getting this information requires many seeks and can thus be slow:"
+msgstr ""
+"Wenn B<--verbose> zwei Mal angegeben wurde, werden zusätzliche Spalten in die "
+"B<block>-Zeilen eingefügt. Diese werden mit einem einfachen B<--verbose> "
+"nicht angezeigt, da das Ermitteln dieser Informationen viele Suchvorgänge "
+"erfordert und daher recht langsam sein kann:"
+
+#. type: IP
+#: ../src/xz/xz.1:2006 ../src/xz/xz.1:2106
+#, no-wrap
+msgid "11."
+msgstr "11."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2008
+msgid "Value of the integrity check in hexadecimal"
+msgstr "Wert der Integritätsprüfung in hexadezimaler Notation"
+
+#. type: IP
+#: ../src/xz/xz.1:2008 ../src/xz/xz.1:2116
+#, no-wrap
+msgid "12."
+msgstr "12."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2010
+msgid "Block header size"
+msgstr "Block-Header-Größe"
+
+#. type: IP
+#: ../src/xz/xz.1:2010
+#, no-wrap
+msgid "13."
+msgstr "13."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2020
+msgid ""
+"Block flags: B<c> indicates that compressed size is present, and B<u> "
+"indicates that uncompressed size is present.  If the flag is not set, a dash "
+"(B<->)  is shown instead to keep the string length fixed.  New flags may be "
+"added to the end of the string in the future."
+msgstr ""
+"Block-Schalter: B<c> gibt an, dass die komprimierte Größe verfügbar ist, und "
+"B<u> gibt an, dass die unkomprimierte Größe verfügbar ist. Falls der Schalter "
+"nicht gesetzt ist, wird stattdessen ein Bindestrich (B<->) angezeigt, um die "
+"Länge der Zeichenkette beizubehalten. In Zukunft könnten neue Schalter am "
+"Ende der Zeichenkette hinzugefügt werden."
+
+#. type: IP
+#: ../src/xz/xz.1:2020
+#, no-wrap
+msgid "14."
+msgstr "14."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2023
+msgid ""
+"Size of the actual compressed data in the block (this excludes the block "
+"header, block padding, and check fields)"
+msgstr ""
+"Größe der tatsächlichen komprimierten Daten im Block. Ausgeschlossen sind "
+"hierbei die Block-Header, die Blockauffüllung und die Prüffelder."
+
+#. type: IP
+#: ../src/xz/xz.1:2023
+#, no-wrap
+msgid "15."
+msgstr "15."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2028
+msgid ""
+"Amount of memory (in bytes) required to decompress this block with this B<xz> "
+"version"
+msgstr ""
+"Größe des Speichers (in Byte), der zum Dekomprimieren dieses Blocks mit "
+"dieser B<xz>-Version benötigt wird."
+
+#. type: IP
+#: ../src/xz/xz.1:2028
+#, no-wrap
+msgid "16."
+msgstr "16."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2035
+msgid ""
+"Filter chain.  Note that most of the options used at compression time cannot "
+"be known, because only the options that are needed for decompression are "
+"stored in the B<.xz> headers."
+msgstr ""
+"Filterkette. Beachten Sie, dass die meisten der bei der Kompression "
+"verwendeten Optionen nicht bekannt sein können, da in den B<.xz>-Headern nur "
+"die für die Dekompression erforderlichen Optionen gespeichert sind."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2041
+msgid "The columns of the B<summary> lines:"
+msgstr "Die Spalten der B<summary>-Zeilen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2048
+msgid ""
+"Amount of memory (in bytes) required to decompress this file with this B<xz> "
+"version"
+msgstr ""
+"Größe des Speichers (in Byte), der zum Dekomprimieren dieser Datei mit dieser "
+"B<xz>-Version benötigt wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2054 ../src/xz/xz.1:2112
+msgid ""
+"B<yes> or B<no> indicating if all block headers have both compressed size and "
+"uncompressed size stored in them"
+msgstr ""
+"B<yes> oder B<no> geben an, ob in allen Block-Headern sowohl die komprimierte "
+"als auch die unkomprimierte Größe gespeichert ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2116
+msgid "I<Since> B<xz> I<5.1.2alpha:>"
+msgstr "I<Seit> B<xz> I<5.1.2alpha:>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2062 ../src/xz/xz.1:2120
+msgid "Minimum B<xz> version required to decompress the file"
+msgstr ""
+"Minimale B<xz>-Version, die zur Dekompression der Datei erforderlich ist"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2068
+msgid "The columns of the B<totals> line:"
+msgstr "Die Spalten der B<totals>-Zeile:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2072
+msgid "Number of streams"
+msgstr "Anzahl der Datenströme"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2074
+msgid "Number of blocks"
+msgstr "Anzahl der Blöcke"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2076
+msgid "Compressed size"
+msgstr "Komprimierte Größe"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2080
+msgid "Average compression ratio"
+msgstr "Durchschnittliches Kompressionsverhältnis"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2083
+msgid ""
+"Comma-separated list of integrity check names that were present in the files"
+msgstr ""
+"Durch Kommata getrennte Liste der Namen der Integritätsprüfungen, die in den "
+"Dateien präsent waren."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2085
+msgid "Stream padding size"
+msgstr "Größe der Datenstromauffüllung"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2091
+msgid ""
+"Number of files.  This is here to keep the order of the earlier columns the "
+"same as on B<file> lines."
+msgstr ""
+"Anzahl der Dateien. Dies dient dazu, die Reihenfolge der vorigen Spalten an "
+"die in den B<file>-Zeilen anzugleichen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2099
+msgid ""
+"If B<--verbose> was specified twice, additional columns are included on the "
+"B<totals> line:"
+msgstr ""
+"Wenn B<--verbose> zwei Mal angegeben wird, werden zusätzliche Spalten in die "
+"B<totals>-Zeile eingefügt:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2106
+msgid ""
+"Maximum amount of memory (in bytes) required to decompress the files with "
+"this B<xz> version"
+msgstr ""
+"Maximale Größe des Speichers (in Byte), der zum Dekomprimieren der Dateien "
+"mit dieser B<xz>-Version benötigt wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2126
+msgid ""
+"Future versions may add new line types and new columns can be added to the "
+"existing line types, but the existing columns won't be changed."
+msgstr ""
+"Zukünftige Versionen könnten neue Zeilentypen hinzufügen, weiterhin könnten "
+"auch in den vorhandenen Zeilentypen weitere Spalten hinzugefügt werden, aber "
+"die existierenden Spalten werden nicht geändert."
+
+#. type: SH
+#: ../src/xz/xz.1:2127 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr "EXIT-STATUS"
+
+#. type: TP
+#: ../src/xz/xz.1:2128 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#, no-wrap
+msgid "B<0>"
+msgstr "B<0>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2131 ../src/lzmainfo/lzmainfo.1:48
+msgid "All is good."
+msgstr "Alles ist in Ordnung."
+
+#. type: TP
+#: ../src/xz/xz.1:2131 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#, no-wrap
+msgid "B<1>"
+msgstr "B<1>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2134 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+msgid "An error occurred."
+msgstr "Ein Fehler ist aufgetreten."
+
+#. type: TP
+#: ../src/xz/xz.1:2134
+#, no-wrap
+msgid "B<2>"
+msgstr "B<2>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2138
+msgid "Something worth a warning occurred, but no actual errors occurred."
+msgstr ""
+"Es ist etwas passiert, das eine Warnung rechtfertigt, aber es sind keine "
+"tatsächlichen Fehler aufgetreten."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2141
+msgid ""
+"Notices (not warnings or errors) printed on standard error don't affect the "
+"exit status."
+msgstr ""
+"In die Standardausgabe geschriebene Hinweise (keine Warnungen oder Fehler), "
+"welche den Exit-Status nicht beeinflussen."
+
+#. type: SH
+#: ../src/xz/xz.1:2142 ../src/scripts/xzgrep.1:80 ../src/scripts/xzless.1:52
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr "UMGEBUNGSVARIABLEN"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2155
+msgid ""
+"B<xz> parses space-separated lists of options from the environment variables "
+"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
+"the command line.  Note that only options are parsed from the environment "
+"variables; all non-options are silently ignored.  Parsing is done with "
+"B<getopt_long>(3)  which is used also for the command line arguments."
+msgstr ""
+"B<xz> wertet eine durch Leerzeichen getrennte Liste von Optionen in den "
+"Umgebungsvariablen B<XZ_DEFAULTS> und B<XZ_OPT> aus (in dieser Reihenfolge), "
+"bevor die Optionen aus der Befehlszeile ausgewertet werden. Beachten Sie, "
+"dass beim Auswerten der Umgebungsvariablen nur Optionen berücksichtigt "
+"werden; alle Einträge, die keine Optionen sind, werden stillschweigend "
+"ignoriert. Die Auswertung erfolgt mit B<getopt_long>(3), welches auch für die "
+"Befehlszeilenargumente verwendet wird."
+
+#. type: TP
+#: ../src/xz/xz.1:2155
+#, no-wrap
+msgid "B<XZ_DEFAULTS>"
+msgstr "B<XZ_DEFAULTS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2164
+msgid ""
+"User-specific or system-wide default options.  Typically this is set in a "
+"shell initialization script to enable B<xz>'s memory usage limiter by "
+"default.  Excluding shell initialization scripts and similar special cases, "
+"scripts must never set or unset B<XZ_DEFAULTS>."
+msgstr ""
+"Benutzerspezifische oder systemweite Standardoptionen. Typischerweise werden "
+"diese in einem Shell-Initialisierungsskript gesetzt, um die "
+"Speicherbedarfsbegrenzung von B<xz> standardmäßig zu aktivieren. Außer bei "
+"Shell-Initialisierungsskripten und in ähnlichen Spezialfällen darf die "
+"Variable B<XZ_DEFAULTS> in Skripten niemals gesetzt oder außer Kraft gesetzt "
+"werden."
+
+#. type: TP
+#: ../src/xz/xz.1:2164
+#, no-wrap
+msgid "B<XZ_OPT>"
+msgstr "B<XZ_OPT>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2175
+msgid ""
+"This is for passing options to B<xz> when it is not possible to set the "
+"options directly on the B<xz> command line.  This is the case e.g. when B<xz> "
+"is run by a script or tool, e.g. GNU B<tar>(1):"
+msgstr ""
+"Dies dient der Übergabe von Optionen an B<xz>, wenn es nicht möglich ist, die "
+"Optionen direkt in der Befehlszeile von B<xz> zu übergeben. Dies ist "
+"beispielsweise der Fall, wenn B<xz> von einem Skript oder Dienstprogramm "
+"ausgeführt wird, zum Beispiel GNU B<tar>(1):"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2181
+#, no-wrap
+msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2194
+msgid ""
+"Scripts may use B<XZ_OPT> e.g. to set script-specific default compression "
+"options.  It is still recommended to allow users to override B<XZ_OPT> if "
+"that is reasonable, e.g. in B<sh>(1)  scripts one may use something like this:"
+msgstr ""
+"Skripte können B<XZ_OPT> zum Beispiel zum Setzen skriptspezifischer Standard-"
+"Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, Benutzern "
+"die Außerkraftsetzung von B<XZ_OPT> zu erlauben, falls dies angemessen ist. "
+"Zum Beispiel könnte in B<sh>(1)-Skripten Folgendes stehen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2201
+#, no-wrap
+msgid ""
+"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT>\n"
+msgstr ""
+"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT>\n"
+
+#. type: SH
+#: ../src/xz/xz.1:2206
+#, no-wrap
+msgid "LZMA UTILS COMPATIBILITY"
+msgstr "KOMPATIBILITÄT ZU DEN LZMA-UTILS"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2219
+msgid ""
+"The command line syntax of B<xz> is practically a superset of B<lzma>, "
+"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x.  In most cases, it "
+"is possible to replace LZMA Utils with XZ Utils without breaking existing "
+"scripts.  There are some incompatibilities though, which may sometimes cause "
+"problems."
+msgstr ""
+"Die Befehlszeilensyntax von B<xz> ist praktisch eine Obermenge der von "
+"B<lzma>, B<unlzma> und B<lzcat> in den LZMA-Utils der Versionen 4.32.x. In "
+"den meisten Fällen sollte es möglich sein, die LZMA-Utils durch die XZ-Utils "
+"zu ersetzen, ohne vorhandene Skripte ändern zu müssen. Dennoch gibt es einige "
+"Inkompatibilitäten, die manchmal Probleme verursachen können."
+
+#. type: SS
+#: ../src/xz/xz.1:2220
+#, no-wrap
+msgid "Compression preset levels"
+msgstr "Voreinstellungsstufen zur Kompression"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2227
+msgid ""
+"The numbering of the compression level presets is not identical in B<xz> and "
+"LZMA Utils.  The most important difference is how dictionary sizes are mapped "
+"to different presets.  Dictionary size is roughly equal to the decompressor "
+"memory usage."
+msgstr ""
+"Die Nummerierung der Voreinstellungsstufen der Kompression ist in B<xz> und "
+"den LZMA-Utils unterschiedlich. Der wichtigste Unterschied ist die Zuweisung "
+"der Wörterbuchgrößen zu den verschiedenen Voreinstellungsstufen. Die "
+"Wörterbuchgröße ist etwa gleich dem Speicherbedarf bei der Dekompression."
+
+#. type: tbl table
+#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258
+#, no-wrap
+msgid "Level"
+msgstr "Stufe"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258
+#, no-wrap
+msgid "xz"
+msgstr "xz"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2233
+#, no-wrap
+msgid "LZMA Utils"
+msgstr "LZMA-Utils"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2234 ../src/xz/xz.1:2259
+#, no-wrap
+msgid "N/A"
+msgstr "nicht verfügbar"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2235
+#, no-wrap
+msgid "64 KiB"
+msgstr "64 KiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2237
+#, no-wrap
+msgid "512 KiB"
+msgstr "512 KiB"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2252
+msgid ""
+"The dictionary size differences affect the compressor memory usage too, but "
+"there are some other differences between LZMA Utils and XZ Utils, which make "
+"the difference even bigger:"
+msgstr ""
+"Die Unterschiede in der Wörterbuchgröße beeinflussen auch den Speicherbedarf "
+"bei der Kompression, aber es gibt noch einige andere Unterschiede zwischen "
+"den LZMA-Utils und den XZ-Utils, die die Kluft noch vergrößern:"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2258
+#, no-wrap
+msgid "LZMA Utils 4.32.x"
+msgstr "LZMA-Utils 4.32.x"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2261 ../src/xz/xz.1:2262
+#, no-wrap
+msgid "12 MiB"
+msgstr "12 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2264
+#, no-wrap
+msgid "26 MiB"
+msgstr "26 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2265
+#, no-wrap
+msgid "45 MiB"
+msgstr "45 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2266
+#, no-wrap
+msgid "83 MiB"
+msgstr "83 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2267
+#, no-wrap
+msgid "159 MiB"
+msgstr "159 MiB"
+
+#. type: tbl table
+#: ../src/xz/xz.1:2268
+#, no-wrap
+msgid "311 MiB"
+msgstr "311 MiB"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2277
+msgid ""
+"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
+"B<-6>, so both use an 8 MiB dictionary by default."
+msgstr ""
+"Die standardmäßige Voreinstellungsstufe in den LZMA-Utils ist B<-7>, während "
+"diese in den XZ-Utils B<-6> ist, daher verwenden beide standardmäßig ein 8 "
+"MiB großes Wörterbuch."
+
+#. type: SS
+#: ../src/xz/xz.1:2278
+#, no-wrap
+msgid "Streamed vs. non-streamed .lzma files"
+msgstr "Vor- und Nachteile von .lzma-Dateien als Datenströme"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2288
+msgid ""
+"The uncompressed size of the file can be stored in the B<.lzma> header.  LZMA "
+"Utils does that when compressing regular files.  The alternative is to mark "
+"that uncompressed size is unknown and use end-of-payload marker to indicate "
+"where the decompressor should stop.  LZMA Utils uses this method when "
+"uncompressed size isn't known, which is the case for example in pipes."
+msgstr ""
+"Die unkomprimierte Größe der Datei kann in den B<.lzma>-Headern gespeichert "
+"werden. Die LZMA-Utils tun das beim Komprimieren gewöhnlicher Dateien. Als "
+"Alternative kann die unkomprimierte Größe als unbekannt markiert und eine "
+"Nutzdatenende-Markierung (end-of-payload) verwendet werden, um anzugeben, wo "
+"der Dekompressor stoppen soll. Die LZMA-Utils verwenden diese Methode, wenn "
+"die unkomprimierte Größe unbekannt ist, was beispielsweise in Pipes "
+"(Befehlsverkettungen) der Fall ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2309
+msgid ""
+"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
+"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
+"marker and have uncompressed size marked as unknown in the B<.lzma> header.  "
+"This may be a problem in some uncommon situations.  For example, a B<.lzma> "
+"decompressor in an embedded device might work only with files that have known "
+"uncompressed size.  If you hit this problem, you need to use LZMA Utils or "
+"LZMA SDK to create B<.lzma> files with known uncompressed size."
+msgstr ""
+"B<xz> unterstützt die Dekompression von B<.lzma>-Dateien mit oder ohne "
+"Nutzdatenende-Markierung, aber alle von B<xz> erstellten B<.lzma>-Dateien "
+"verwenden diesen Nutzdatenende-Markierung, wobei die unkomprimierte Größe in "
+"den B<.lzma>-Headern als unbekannt markiert wird. Das könnte in einigen "
+"unüblichen Situationen ein Problem sein. Zum Beispiel könnte ein B<.lzma>-"
+"Dekompressor in einem Gerät mit eingebettetem System nur mit Dateien "
+"funktionieren, deren unkomprimierte Größe bekannt ist. Falls Sie auf dieses "
+"Problem stoßen, müssen Sie die LZMA-Utils oder das LZMA-SDK verwenden, um B<."
+"lzma>-Dateien mit bekannter unkomprimierter Größe zu erzeugen."
+
+#. type: SS
+#: ../src/xz/xz.1:2310
+#, no-wrap
+msgid "Unsupported .lzma files"
+msgstr "Nicht unterstützte .lzma-Dateien"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2333
+msgid ""
+"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4.  "
+"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
+"files with B<lc=3> and B<lp=0>.  Creating files with other I<lc> and I<lp> is "
+"possible with B<xz> and with LZMA SDK."
+msgstr ""
+"Das B<.lzma>-Format erlaubt I<lc>-Werte bis zu 8 und I<lp>-Werte bis zu 4. "
+"Die LZMA-Utils können Dateien mit beliebigem I<lc> und I<lp> dekomprimieren, "
+"aber erzeugen immer Dateien mit B<lc=3> und B<lp=0>. Das Erzeugen von Dateien "
+"mit anderem I<lc> und I<lp> ist mit B<xz> und mit dem LZMA-SDK möglich."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2344
+msgid ""
+"The implementation of the LZMA1 filter in liblzma requires that the sum of "
+"I<lc> and I<lp> must not exceed 4.  Thus, B<.lzma> files, which exceed this "
+"limitation, cannot be decompressed with B<xz>."
+msgstr ""
+"Die Implementation des LZMA-Filters in liblzma setzt voraus, dass die Summe "
+"von I<lc> und I<lp> nicht größer als 4 ist. Daher können B<.lzma>-Dateien, "
+"welche diese Begrenzung überschreiten, mit B<xz> nicht dekomprimiert werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2359
+msgid ""
+"LZMA Utils creates only B<.lzma> files which have a dictionary size of 2^I<n> "
+"(a power of 2) but accepts files with any dictionary size.  liblzma accepts "
+"only B<.lzma> files which have a dictionary size of 2^I<n> or 2^I<n> + "
+"2^(I<n>-1).  This is to decrease false positives when detecting B<.lzma> "
+"files."
+msgstr ""
+"Die LZMA-Utils erzeugen nur B<.lzma>-Dateien mit einer Wörterbuchgröße von "
+"2^I<n> (einer Zweierpotenz), aber akzeptieren Dateien mit einer beliebigen "
+"Wörterbuchgröße. Liblzma akzeptiert nur B<.lzma>-Dateien mit einer "
+"Wörterbuchgröße von 2^I<n> oder 2^I<n> + 2^(I<n>-1). Dies dient zum "
+"Verringern von Fehlalarmen beim Erkennen von B<.lzma>-Dateien."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2364
+msgid ""
+"These limitations shouldn't be a problem in practice, since practically all "
+"B<.lzma> files have been compressed with settings that liblzma will accept."
+msgstr ""
+"Diese Einschränkungen sollten in der Praxis kein Problem sein, da praktisch "
+"alle B<.lzma>-Dateien mit Einstellungen komprimiert wurden, die Liblzma "
+"akzeptieren wird."
+
+#. type: SS
+#: ../src/xz/xz.1:2365
+#, no-wrap
+msgid "Trailing garbage"
+msgstr "Angehängter Datenmüll"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2375
+msgid ""
+"When decompressing, LZMA Utils silently ignore everything after the first B<."
+"lzma> stream.  In most situations, this is a bug.  This also means that LZMA "
+"Utils don't support decompressing concatenated B<.lzma> files."
+msgstr ""
+"Bei der Dekompression ignorieren die LZMA-Utils stillschweigend alles nach "
+"dem ersten B<.lzma>-Datenstrom. In den meisten Situationen ist das ein "
+"Fehler. Das bedeutet auch, dass die LZMA-Utils die Dekompression verketteter "
+"B<.lzma>-Dateien nicht unterstützen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2385
+msgid ""
+"If there is data left after the first B<.lzma> stream, B<xz> considers the "
+"file to be corrupt unless B<--single-stream> was used.  This may break "
+"obscure scripts which have assumed that trailing garbage is ignored."
+msgstr ""
+"Wenn nach dem ersten B<.lzma>-Datenstrom Daten verbleiben, erachtet B<xz> die "
+"Datei als beschädigt, es sei denn, die Option B<--single-stream> wurde "
+"verwendet. Dies könnte die Ausführung von Skripten beeinflussen, die davon "
+"ausgehen, dass angehängter Datenmüll ignoriert wird."
+
+#. type: SH
+#: ../src/xz/xz.1:2386 ../src/xzdec/xzdec.1:117
+#, no-wrap
+msgid "NOTES"
+msgstr "ANMERKUNGEN"
+
+#. type: SS
+#: ../src/xz/xz.1:2388
+#, no-wrap
+msgid "Compressed output may vary"
+msgstr "Die komprimierte Ausgabe kann variieren"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2399
+msgid ""
+"The exact compressed output produced from the same uncompressed input file "
+"may vary between XZ Utils versions even if compression options are "
+"identical.  This is because the encoder can be improved (faster or better "
+"compression)  without affecting the file format.  The output can vary even "
+"between different builds of the same XZ Utils version, if different build "
+"options are used."
+msgstr ""
+"Die exakte komprimierte Ausgabe, die aus der gleichen unkomprimierten "
+"Eingabedatei erzeugt wird, kann zwischen den Versionen der XZ-Utils "
+"unterschiedlich sein, selbst wenn die Kompressionsoptionen identisch sind. "
+"Das kommt daher, weil der Kodierer verbessert worden sein könnte "
+"(hinsichtlich schnellerer oder besserer Kompression), ohne das Dateiformat zu "
+"beeinflussen. Die Ausgabe kann sogar zwischen verschiedenen Programmen der "
+"gleichen Version der XZ-Utils variieren, wenn bei der Erstellung des "
+"Binärprogramms unterschiedliche Optionen verwendet wurden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2409
+msgid ""
+"The above means that once B<--rsyncable> has been implemented, the resulting "
+"files won't necessarily be rsyncable unless both old and new files have been "
+"compressed with the same xz version.  This problem can be fixed if a part of "
+"the encoder implementation is frozen to keep rsyncable output stable across "
+"xz versions."
+msgstr ""
+"Sobald B<--rsyncable> implementiert wurde, bedeutet das, dass die sich "
+"ergebenden Dateien nicht notwendigerweise mit Rsync abgeglichen werden "
+"können, außer wenn die alte und neue Datei mit der gleichen B<xz>-Version "
+"erzeugt wurden. Das Problem kann beseitigt werden, wenn ein Teil der Encoder-"
+"Implementierung eingefroren wird, um die mit Rsync abgleichbare Ausgabe über "
+"B<xz>-Versionsgrenzen hinweg stabil zu halten."
+
+#. type: SS
+#: ../src/xz/xz.1:2410
+#, no-wrap
+msgid "Embedded .xz decompressors"
+msgstr "Eingebettete .xz-Dekompressoren"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2427
+msgid ""
+"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
+"necessarily support files created with integrity I<check> types other than "
+"B<none> and B<crc32>.  Since the default is B<--check=crc64>, you must use "
+"B<--check=none> or B<--check=crc32> when creating files for embedded systems."
+msgstr ""
+"Eingebettete B<.xz>-Dekompressor-Implementierungen wie XZ Embedded "
+"unterstützen nicht unbedingt Dateien, die mit anderen Integritätsprüfungen "
+"(I<Prüfung>-Typen) als B<none> und B<crc32> erzeugt wurden. Da B<--"
+"check=crc64> die Voreinstellung ist, müssen Sie B<--check=none> oder B<--"
+"check=crc32> verwenden, wenn Sie Dateien für eingebettete Systeme erstellen."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2437
+msgid ""
+"Outside embedded systems, all B<.xz> format decompressors support all the "
+"I<check> types, or at least are able to decompress the file without verifying "
+"the integrity check if the particular I<check> is not supported."
+msgstr ""
+"Außerhalb eingebetteter Systeme unterstützen die Dekompressoren des B<.xz>-"
+"Formats alle I<Prüfung>-Typen oder sind mindestens in der Lage, die Datei zu "
+"dekomprimieren, ohne deren Integrität zu prüfen, wenn die bestimmte "
+"I<Prüfung> nicht verfügbar ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2440
+msgid ""
+"XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr ""
+"XZ Embedded unterstützt BCJ-Filter, aber nur mit dem vorgegebenen "
+"Startversatz."
+
+#. type: SH
+#: ../src/xz/xz.1:2441
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "BEISPIELE"
+
+#. type: SS
+#: ../src/xz/xz.1:2443
+#, no-wrap
+msgid "Basics"
+msgstr "Grundlagen"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2453
+msgid ""
+"Compress the file I<foo> into I<foo.xz> using the default compression level "
+"(B<-6>), and remove I<foo> if compression is successful:"
+msgstr ""
+"Komprimiert die Datei I<foo> mit der Standard-Kompressionsstufe (B<-6>) zu "
+"I<foo.xz> und entfernt I<foo> nach erfolgreicher Kompression:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2458
+#, no-wrap
+msgid "CW<xz foo>\n"
+msgstr "CW<xz foo>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2469
+msgid ""
+"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
+"decompression is successful:"
+msgstr ""
+"I<bar.xz> in I<bar> dekomprimieren und I<bar.xz> selbst dann nicht löschen, "
+"wenn die Dekompression erfolgreich war:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2474
+#, no-wrap
+msgid "CW<xz -dk bar.xz>\n"
+msgstr "CW<xz -dk bar.xz>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2487
+msgid ""
+"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
+"slower than e.g. the default B<-6>, but needs less memory for compression and "
+"decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr ""
+"I<baz.tar.xz> mit der Voreinstellung B<-4e> (B<-4 --extreme>) erzeugen, was "
+"langsamer ist als beispielsweise die Vorgabe B<-6>, aber weniger Speicher für "
+"Kompression und Dekompression benötigt (48\\ MiB beziehungsweise 5\\ MiB):"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2492
+#, no-wrap
+msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2498
+msgid ""
+"A mix of compressed and uncompressed files can be decompressed to standard "
+"output with a single command:"
+msgstr ""
+"Eine Mischung aus komprimierten und unkomprimierten Dateien kann mit einem "
+"einzelnen Befehl dekomprimiert in die Standardausgabe geschrieben werden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2503
+#, no-wrap
+msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgstr "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+
+#. type: SS
+#: ../src/xz/xz.1:2507
+#, no-wrap
+msgid "Parallel compression of many files"
+msgstr "Parallele Kompression von vielen Dateien"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2513
+msgid ""
+"On GNU and *BSD, B<find>(1)  and B<xargs>(1)  can be used to parallelize "
+"compression of many files:"
+msgstr ""
+"Auf GNU- und *BSD-Systemen können B<find>(1) und B<xargs>(1) zum "
+"Parallelisieren der Kompression vieler Dateien verwendet werden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2519
+#, no-wrap
+msgid ""
+"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+"    | xargs -0r -P4 -n16 xz -T1>\n"
+msgstr ""
+"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+"    | xargs -0r -P4 -n16 xz -T1>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2541
+msgid ""
+"The B<-P> option to B<xargs>(1)  sets the number of parallel B<xz> "
+"processes.  The best value for the B<-n> option depends on how many files "
+"there are to be compressed.  If there are only a couple of files, the value "
+"should probably be 1; with tens of thousands of files, 100 or even more may "
+"be appropriate to reduce the number of B<xz> processes that B<xargs>(1)  will "
+"eventually create."
+msgstr ""
+"Die Option B<-P> von B<xargs>(1) legt die Anzahl der parallelen B<xz>-"
+"Prozesse fest. Der beste Wert für die Option B<-n> hängt davon ab, wie viele "
+"Dateien komprimiert werden sollen. Wenn es sich nur um wenige Dateien "
+"handelt, sollte der Wert wahrscheinlich 1 sein; bei Zehntausenden von Dateien "
+"kann 100 oder noch mehr angemessener sein, um die Anzahl der B<xz>-Prozesse "
+"zu beschränken, die B<xargs>(1) schließlich erzeugen wird."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2549
+msgid ""
+"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
+"because B<xargs>(1)  is used to control the amount of parallelization."
+msgstr ""
+"Die Option B<-T1> für B<xz> dient dazu, den Einzelthread-Modus zu erzwingen, "
+"da B<xargs>(1) zur Steuerung des Umfangs der Parallelisierung verwendet wird."
+
+#. type: SS
+#: ../src/xz/xz.1:2550
+#, no-wrap
+msgid "Robot mode"
+msgstr "Roboter-Modus"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2553
+msgid ""
+"Calculate how many bytes have been saved in total after compressing multiple "
+"files:"
+msgstr ""
+"Berechnen, wie viel Byte nach der Kompression mehrerer Dateien insgesamt "
+"eingespart wurden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2558
+#, no-wrap
+msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2573
+msgid ""
+"A script may want to know that it is using new enough B<xz>.  The following "
+"B<sh>(1)  script checks that the version number of the B<xz> tool is at least "
+"5.0.0.  This method is compatible with old beta versions, which didn't "
+"support the B<--robot> option:"
+msgstr ""
+"Ein Skript könnte abfragen wollen, ob es ein B<xz> verwendet, das aktuell "
+"genug ist. Das folgende B<sh>(1)-Skript prüft, ob die Versionsnummer des "
+"Dienstprogramms B<xz> mindestens 5.0.0 ist. Diese Methode ist zu alten Beta-"
+"Versionen kompatibel, welche die Option B<--robot> nicht unterstützen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2582
+#, no-wrap
+msgid ""
+"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"        [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
+"    echo \"Your xz is too old.\"\n"
+"fi\n"
+"unset XZ_VERSION LIBLZMA_VERSION>\n"
+msgstr ""
+"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"        [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
+"    echo \"Ihre Version von Xz ist zu alt.\"\n"
+"fi\n"
+"unset XZ_VERSION LIBLZMA_VERSION>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2589
+msgid ""
+"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
+"has already been set, don't increase it:"
+msgstr ""
+"Eine Speicherbedarfsbegrenzung für die Dekompression mit B<XZ_OPT> setzen, "
+"aber eine bereits gesetzte Begrenzung nicht erhöhen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2599
+#, no-wrap
+msgid ""
+"CW<NEWLIM=$((123 E<lt>E<lt> 20))  # 123 MiB\n"
+"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
+"if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then\n"
+"    XZ_OPT=\"$XZ_OPT --memlimit-decompress=$NEWLIM\"\n"
+"    export XZ_OPT\n"
+"fi>\n"
+msgstr ""
+"CW<NEWLIM=$((123 E<lt>E<lt> 20))  # 123 MiB\n"
+"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
+"if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then\n"
+"    XZ_OPT=\"$XZ_OPT --memlimit-decompress=$NEWLIM\"\n"
+"    export XZ_OPT\n"
+"fi>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2609
+msgid ""
+"The simplest use for custom filter chains is customizing a LZMA2 preset.  "
+"This can be useful, because the presets cover only a subset of the "
+"potentially useful combinations of compression settings."
+msgstr ""
+"Der einfachste Anwendungsfall für benutzerdefinierte Filterketten ist die "
+"Anpassung von LZMA2-Voreinstellungsstufen. Das kann nützlich sein, weil die "
+"Voreinstellungen nur einen Teil der potenziell sinnvollen Kombinationen aus "
+"Kompressionseinstellungen abdecken."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2617
+msgid ""
+"The CompCPU columns of the tables from the descriptions of the options "
+"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets.  "
+"Here are the relevant parts collected from those two tables:"
+msgstr ""
+"Die KompCPU-Spalten der Tabellen aus den Beschreibungen der Optionen B<-0> … "
+"B<-9> und B<--extreme> sind beim Anpassen der LZMA2-Voreinstellungen "
+"nützlich. Diese sind die relevanten Teile aus diesen zwei Tabellen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2642
+msgid ""
+"If you know that a file requires somewhat big dictionary (e.g. 32 MiB) to "
+"compress well, but you want to compress it quicker than B<xz -8> would do, a "
+"preset with a low CompCPU value (e.g. 1)  can be modified to use a bigger "
+"dictionary:"
+msgstr ""
+"Wenn Sie wissen, dass eine Datei für eine gute Kompression ein etwas größeres "
+"Wörterbuch benötigt (zum Beispiel 32 MiB), aber Sie sie schneller "
+"komprimieren wollen, als dies mit B<xz -8> geschehen würde, kann eine "
+"Voreinstellung mit einem niedrigen KompCPU-Wert (zum Beispiel 1) dahingehend "
+"angepasst werden, ein größeres Wörterbuch zu verwenden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2647
+#, no-wrap
+msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2663
+msgid ""
+"With certain files, the above command may be faster than B<xz -6> while "
+"compressing significantly better.  However, it must be emphasized that only "
+"some files benefit from a big dictionary while keeping the CompCPU value "
+"low.  The most obvious situation, where a big dictionary can help a lot, is "
+"an archive containing very similar files of at least a few megabytes each.  "
+"The dictionary size has to be significantly bigger than any individual file "
+"to allow LZMA2 to take full advantage of the similarities between consecutive "
+"files."
+msgstr ""
+"Mit bestimmten Dateien kann der obige Befehl schneller sein als B<xz -6>, "
+"wobei die Kompression deutlich besser wird. Dennoch muss betont werden, dass "
+"nur wenige Dateien von einem größeren Wörterbuch profitieren, wenn der "
+"KompCPU-Wert niedrig bleibt. Der offensichtlichste Fall, in dem ein größeres "
+"Wörterbuch  sehr hilfreich sein kann, ist ein Archiv, das einander sehr "
+"ähnliche Dateien enthält, die jeweils wenigstens einige Megabyte groß sind. "
+"Das Wörterbuch muss dann deutlich größer sein als die einzelne Datei, damit "
+"LZMA2 den größtmöglichen Vorteil aus den Ähnlichkeiten der aufeinander "
+"folgenden Dateien zieht."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2670
+msgid ""
+"If very high compressor and decompressor memory usage is fine, and the file "
+"being compressed is at least several hundred megabytes, it may be useful to "
+"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
+msgstr ""
+"Wenn hoher Speicherbedarf für Kompression und Dekompression kein Problem ist "
+"und die zu komprimierende Datei mindestens einige Hundert Megabyte groß ist, "
+"kann es sinnvoll sein, ein noch größeres Wörterbuch zu verwenden, als die 64 "
+"MiB, die mit B<xz -9> verwendet werden würden:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2675
+#, no-wrap
+msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2688
+msgid ""
+"Using B<-vv> (B<--verbose --verbose>)  like in the above example can be "
+"useful to see the memory requirements of the compressor and decompressor.  "
+"Remember that using a dictionary bigger than the size of the uncompressed "
+"file is waste of memory, so the above command isn't useful for small files."
+msgstr ""
+"Die Verwendung von B<-vv> (B<--verbose --verbose>) wie im obigen Beispiel "
+"kann nützlich sein, um den Speicherbedarf für Kompressor und Dekompressor zu "
+"sehen. Denken Sie daran, dass ein Wörterbuch, das größer als die "
+"unkomprimierte Datei ist, Speicherverschwendung wäre. Daher ist der obige "
+"Befehl für kleine Dateien nicht sinnvoll."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2701
+msgid ""
+"Sometimes the compression time doesn't matter, but the decompressor memory "
+"usage has to be kept low e.g. to make it possible to decompress the file on "
+"an embedded system.  The following command uses B<-6e> (B<-6 --extreme>)  as "
+"a base and sets the dictionary to only 64\\ KiB.  The resulting file can be "
+"decompressed with XZ Embedded (that's why there is B<--check=crc32>)  using "
+"about 100\\ KiB of memory."
+msgstr ""
+"Manchmal spielt die Kompressionszeit keine Rolle, aber der Speicherbedarf bei "
+"der Dekompression muss gering gehalten werden, zum Beispiel um die Datei auf "
+"eingebetteten Systemen dekomprimieren zu können. Der folgende Befehl "
+"verwendet B<-6e> (B<-6 --extreme>) als Basis und setzt die Wörterbuchgröße "
+"auf nur 64\\ KiB. Die sich ergebende Datei kann mit XZ Embedded (aus diesem "
+"Grund ist dort B<--check=crc32>) mit nur etwa 100\\ KiB Speicher "
+"dekomprimiert werden."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2706
+#, no-wrap
+msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2729
+msgid ""
+"If you want to squeeze out as many bytes as possible, adjusting the number of "
+"literal context bits (I<lc>)  and number of position bits (I<pb>)  can "
+"sometimes help.  Adjusting the number of literal position bits (I<lp>)  might "
+"help too, but usually I<lc> and I<pb> are more important.  E.g. a source code "
+"archive contains mostly US-ASCII text, so something like the following might "
+"give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without "
+"B<lc=4>):"
+msgstr ""
+"Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die Anpassung "
+"der Anzahl der literalen Kontextbits (I<lc>) und der Anzahl der Positionsbits "
+"(I<pb>) manchmal hilfreich sein. Auch die Anpassung der Anzahl der literalen "
+"Positionsbits (I<lp>) könnte helfen, aber üblicherweise sind I<lc> und I<pb> "
+"wichtiger. Wenn ein Quellcode-Archiv zum Beispiel hauptsächlich ASCII-Text "
+"enthält, könnte ein Aufruf wie der folgende eine etwas kleinere Datei (etwa "
+"0,1\\ %) ergeben als mit B<xz -6e> (versuchen Sie es auch B<lc=4>):"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2734
+#, no-wrap
+msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 Quellcode.tar>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2742
+msgid ""
+"Using another filter together with LZMA2 can improve compression with certain "
+"file types.  E.g. to compress a x86-32 or x86-64 shared library using the x86 "
+"BCJ filter:"
+msgstr ""
+"Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei "
+"verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte "
+"Bibliothek der Architekturen x86-32 oder x86-64 mit dem BCJ-Filter für x86 "
+"komprimieren:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2747
+#, no-wrap
+msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2761
+msgid ""
+"Note that the order of the filter options is significant.  If B<--x86> is "
+"specified after B<--lzma2>, B<xz> will give an error, because there cannot be "
+"any filter after LZMA2, and also because the x86 BCJ filter cannot be used as "
+"the last filter in the chain."
+msgstr ""
+"Beachten Sie, dass die Reihenfolge der Filteroptionen von Bedeutung ist. "
+"Falls B<--x86> nach B<--lzma2> angegeben wird, gibt B<xz> einen Fehler aus, "
+"weil nach LZMA2 kein weiterer Filter sein darf und auch weil der BCJ-Filter "
+"für x86 nicht als letzter Filter in der Filterkette gesetzt werden darf."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2767
+msgid ""
+"The Delta filter together with LZMA2 can give good results with bitmap "
+"images.  It should usually beat PNG, which has a few more advanced filters "
+"than simple delta but uses Deflate for the actual compression."
+msgstr ""
+"Der Delta-Filter zusammen mit LZMA2 kann bei Bitmap-Bildern gute Ergebnisse "
+"liefern. Er sollte üblicherweise besser sein als PNG, welches zwar einige "
+"fortgeschrittene Filter als ein simples delta bietet, aber für die "
+"eigentliche Kompression »Deflate« verwendet."
+
+#. type: Plain text
+#: ../src/xz/xz.1:2777
+msgid ""
+"The image has to be saved in uncompressed format, e.g. as uncompressed TIFF.  "
+"The distance parameter of the Delta filter is set to match the number of "
+"bytes per pixel in the image.  E.g. 24-bit RGB bitmap needs B<dist=3>, and it "
+"is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr ""
+"Das Bild muss in einem unkomprimierten Format gespeichert werden, zum "
+"Beispiel als unkomprimiertes TIFF. Der Abstandsparameter des Delta-Filters "
+"muss so gesetzt werden, dass er der Anzahl der Bytes pro Pixel im Bild "
+"entspricht. Zum Beispiel erfordert ein 24-Bit-RGB-Bitmap B<dist=3>, außerdem "
+"ist es gut, B<pb=0> an LZMA2 zu übergeben, um die 3-Byte-Ausrichtung zu "
+"berücksichtigen:"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2782
+#, no-wrap
+msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2790
+msgid ""
+"If multiple images have been put into a single archive (e.g.\\& B<.tar>), the "
+"Delta filter will work on that too as long as all images have the same number "
+"of bytes per pixel."
+msgstr ""
+"Wenn sich mehrere Bilder in einem einzelnen Archiv befinden (zum Beispiel\\& "
+"B<.tar>), funktioniert der Delta-Filter damit auch, sofern alle Bilder im "
+"Archiv die gleiche Anzahl Bytes pro Pixel haben."
+
+#. type: SH
+#: ../src/xz/xz.1:2791 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
+#: ../src/scripts/xzdiff.1:64 ../src/scripts/xzgrep.1:92
+#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "SIEHE AUCH"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2800
+msgid ""
+"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
+"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+msgstr ""
+"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
+"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2802
+msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
+msgstr "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2804 ../src/xzdec/xzdec.1:146
+msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
+msgstr "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
+
+#. type: Plain text
+#: ../src/xz/xz.1:2805
+msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+msgstr "LZMA-SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+
+#. type: TH
+#: ../src/xzdec/xzdec.1:7
+#, no-wrap
+msgid "XZDEC"
+msgstr "XZDEC"
+
+#. type: TH
+#: ../src/xzdec/xzdec.1:7
+#, no-wrap
+msgid "2017-04-19"
+msgstr "19. April 2017"
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:10
+msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
+msgstr "xzdec, lzmadec - Kleine Dekompressoren für .xz und .lzma"
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:14
+msgid "B<xzdec> [I<option...>] [I<file...>]"
+msgstr "B<xzdec> [I<Option…>] [I<Datei…>]"
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:18
+msgid "B<lzmadec> [I<option...>] [I<file...>]"
+msgstr "B<lzmadec> [I<Option…>] [I<Datei…>]"
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:44
+msgid ""
+"B<xzdec> is a liblzma-based decompression-only tool for B<.xz> (and only B<."
+"xz>)  files.  B<xzdec> is intended to work as a drop-in replacement for "
+"B<xz>(1)  in the most common situations where a script has been written to "
+"use B<xz --decompress --stdout> (and possibly a few other commonly used "
+"options) to decompress B<.xz> files.  B<lzmadec> is identical to B<xzdec> "
+"except that B<lzmadec> supports B<.lzma> files instead of B<.xz> files."
+msgstr ""
+"B<xzdec> ist ein auf Liblzma basierendes Nur-Dekompressionswerkzeug für B<."
+"xz>-Dateien (und B<nur> für B<.xz>-Dateien). B<xzdec> ist als direkter Ersatz "
+"für B<xz>(1) in jenen Situationen konzipiert, wo ein Skript B<xz --decompress "
+"--stdout> (und eventuelle einige andere höufig genutzte Optionen) zum "
+"Dekomprimieren von B<.xz>-Dateien. B<lzmadec> ist weitgehend identisch zu "
+"B<xzdec>, mit der Ausnahme, dass B<lzmadec> B<.lzma>-Dateien anstelle von B<."
+"xz>-Dateien unterstützt."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:61
+msgid ""
+"To reduce the size of the executable, B<xzdec> doesn't support multithreading "
+"or localization, and doesn't read options from B<XZ_DEFAULTS> and B<XZ_OPT> "
+"environment variables.  B<xzdec> doesn't support displaying intermediate "
+"progress information: sending B<SIGINFO> to B<xzdec> does nothing, but "
+"sending B<SIGUSR1> terminates the process instead of displaying progress "
+"information."
+msgstr ""
+"Um die Größe der ausführbaren Datei zu reduzieren, unterstützt B<xzdec> weder "
+"Multithreading noch Lokalisierung. Außerdem liest es keine Optionen aus den "
+"Umgebungsvariablen B<XZ_DEFAULTS> und B<XZ_OPT>. B<xzdec> unterstützt keine "
+"zwischenzeitlichen Fortschrittsinformationen: Das Senden von B<SIGINFO> an "
+"B<xzdec> hat keine Auswirkungen, jedoch beendet B<SIGUSR1> den Prozess, "
+"anstatt Fortschrittsinformationen anzuzeigen."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:69
+msgid ""
+"Ignored for B<xz>(1)  compatibility.  B<xzdec> supports only decompression."
+msgstr ""
+"ist zwecks Kompatibilität zu B<xz>(1) vorhanden; wird ignoriert. B<xzdec> "
+"unterstützt nur Dekompression."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:76
+msgid ""
+"Ignored for B<xz>(1)  compatibility.  B<xzdec> never creates or removes any "
+"files."
+msgstr ""
+"ist zwecks Kompatibilität zu B<xz>(1) vorhanden; wird ignoriert. B<xzdec> "
+"erzeugt oder entfernt niemals Dateien."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:83
+msgid ""
+"Ignored for B<xz>(1)  compatibility.  B<xzdec> always writes the decompressed "
+"data to standard output."
+msgstr ""
+"ist zwecks Kompatibilität zu B<xz>(1) vorhanden; wird ignoriert. B<xzdec> "
+"schreibt die dekomprimierten Daten immer in die Standardausgabe."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:89
+msgid ""
+"Specifying this once does nothing since B<xzdec> never displays any warnings "
+"or notices.  Specify this twice to suppress errors."
+msgstr ""
+"hat bei einmaliger Angabe keine Wirkung, da B<xzdec> niemals Warnungen oder "
+"sonstige Meldungen anzeigt. Wenn Sie dies zweimal angeben, werden "
+"Fehlermeldungen unterdrückt."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:96
+msgid ""
+"Ignored for B<xz>(1)  compatibility.  B<xzdec> never uses the exit status 2."
+msgstr ""
+"ist zwecks Kompatibilität zu B<xz>(1) vorhanden; wird ignoriert. B<xzdec> "
+"verwendet niemals den Exit-Status 2."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:99
+msgid "Display a help message and exit successfully."
+msgstr "zeigt eine Hilfemeldung an und beendet das Programm erfolgreich."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:104
+msgid "Display the version number of B<xzdec> and liblzma."
+msgstr "zeigt die Versionsnummer von B<xzdec> und liblzma an."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:108
+msgid "All was good."
+msgstr "Alles ist in Ordnung."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:117
+msgid ""
+"B<xzdec> doesn't have any warning messages like B<xz>(1)  has, thus the exit "
+"status 2 is not used by B<xzdec>."
+msgstr ""
+"B<xzdec> gibt keine Warnmeldungen wie B<xz>(1) aus, daher wird der Exit-"
+"Status 2 von B<xzdec> nicht verwendet."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:131
+msgid ""
+"Use B<xz>(1)  instead of B<xzdec> or B<lzmadec> for normal everyday use.  "
+"B<xzdec> or B<lzmadec> are meant only for situations where it is important to "
+"have a smaller decompressor than the full-featured B<xz>(1)."
+msgstr ""
+"Verwenden Sie B<xz>(1) anstelle von B<xzdec> oder B<lzmadec> im normalen "
+"täglichen Gebrauch. B<xzdec> oder B<lzmadec> sind nur für Situationen "
+"gedacht, in denen ein kleinerer Dekompressor statt des voll ausgestatteten "
+"B<xz>(1) wichtig ist."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:143
+msgid ""
+"B<xzdec> and B<lzmadec> are not really that small.  The size can be reduced "
+"further by dropping features from liblzma at compile time, but that shouldn't "
+"usually be done for executables distributed in typical non-embedded operating "
+"system distributions.  If you need a truly small B<.xz> decompressor, "
+"consider using XZ Embedded."
+msgstr ""
+"B<xzdec> und B<lzmadec> sind nicht wirklich extrem klein. Die Größe kann "
+"durch Deaktivieren von Funktionen bei der Kompilierung von Liblzma weiter "
+"verringert werden, aber das sollte nicht für ausführbare Dateien getan "
+"werden, die in typischen Betriebssystemen ausgeliefert werden, außer in den "
+"Distributionen für eingebettete Systeme. Wenn Sie einen wirklich winzigen "
+"Dekompressor für B<.xz>-Dateien brauchen, sollten Sie stattdessen XZ Embedded "
+"in Erwägung ziehen."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+msgid "B<xz>(1)"
+msgstr "B<xz>(1)"
+
+#. type: TH
+#: ../src/lzmainfo/lzmainfo.1:7
+#, no-wrap
+msgid "LZMAINFO"
+msgstr "LZMAINFO"
+
+#. type: TH
+#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#, no-wrap
+msgid "2013-06-30"
+msgstr "30. Juni 2013"
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:10
+msgid "lzmainfo - show information stored in the .lzma file header"
+msgstr "lzmainfo - im .lzma-Dateikopf enthaltene Informationen anzeigen"
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:15
+msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
+msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<Datei …>]"
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:31
+msgid ""
+"B<lzmainfo> shows information stored in the B<.lzma> file header.  It reads "
+"the first 13 bytes from the specified I<file>, decodes the header, and prints "
+"it to standard output in human readable format.  If no I<files> are given or "
+"I<file> is B<->, standard input is read."
+msgstr ""
+"B<lzmainfo> zeigt die im B<.lzma>-Dateikopf enthaltenen Informationen an. Es "
+"liest die ersten 13 Bytes aus der angegebenen I<Datei>, dekodiert den "
+"Dateikopf und gibt das Ergebnis in die Standardausgabe in einem "
+"menschenlesbaren Format aus. Falls keine I<Datei>en angegeben werden oder die "
+"I<Datei> als B<-> übergeben wird, dann wird aus der Standardeingabe gelesen."
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:40
+msgid ""
+"Usually the most interesting information is the uncompressed size and the "
+"dictionary size.  Uncompressed size can be shown only if the file is in the "
+"non-streamed B<.lzma> format variant.  The amount of memory required to "
+"decompress the file is a few dozen kilobytes plus the dictionary size."
+msgstr ""
+"In der Regel sind die unkomprimierte Größe der Daten und die Größe des "
+"Wörterbuchs am bedeutsamsten. Die unkomprimierte Größe kann nur dann "
+"angezeigt werden, wenn die Datei im B<.lzma>-Format kein Datenstrom ist. Die "
+"Größe des für die Dekompression nötigen Speichers beträgt einige Dutzend "
+"Kilobyte zuzüglich der Größe des Inhaltsverzeichnisses."
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:44
+msgid ""
+"B<lzmainfo> is included in XZ Utils primarily for backward compatibility with "
+"LZMA Utils."
+msgstr ""
+"B<lzmainfo> ist in den XZ-Dienstprogrammen hauptsächlich zur Kompatibilität "
+"zu den LZMA-Dienstprogrammen enthalten."
+
+#. type: SH
+#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:72
+#, no-wrap
+msgid "BUGS"
+msgstr "FEHLER"
+
+#. type: Plain text
+#: ../src/lzmainfo/lzmainfo.1:59
+msgid ""
+"B<lzmainfo> uses B<MB> while the correct suffix would be B<MiB> (2^20 "
+"bytes).  This is to keep the output compatible with LZMA Utils."
+msgstr ""
+"B<lzmainfo> verwendet B<MB>, während das korrekte Suffix B<MiB> (2^20 Bytes) "
+"wäre. Damit wird die Kompatibilität zu den LZMA-Dienstprogrammen "
+"gewährleistet."
+
+#. type: TH
+#: ../src/scripts/xzdiff.1:9
+#, no-wrap
+msgid "XZDIFF"
+msgstr "XZDIFF"
+
+#. type: TH
+#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
+#, no-wrap
+msgid "2011-03-19"
+msgstr "19. März 2011"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:12
+msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
+msgstr "xzcmp, xzdiff, lzcmp, lzdiff - komprimierte Dateien vergleichen"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:15
+msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
+msgstr "B<xzcmp> [I<cmp-Optionen>] I<Datei1> [I<Datei2>]"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:18
+msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
+msgstr "B<xzdiff> [I<diff-Optionen>] I<Datei1> [I<Datei2>]"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:21
+msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
+msgstr "B<lzcmp> [I<cmp-Optionen>] I<Datei1> [I<Datei2>]"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:24
+msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
+msgstr "B<lzdiff> [I<diff-Optionen>] I<Datei1> [I<Datei2>]"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:58
+msgid ""
+"B<xzcmp> and B<xzdiff> invoke B<cmp>(1)  or B<diff>(1)  on files compressed "
+"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or B<lzop>(1).  All "
+"options specified are passed directly to B<cmp>(1)  or B<diff>(1).  If only "
+"one file is specified, then the files compared are I<file1> (which must have "
+"a suffix of a supported compression format) and I<file1> from which the "
+"compression format suffix has been stripped.  If two files are specified, "
+"then they are uncompressed if necessary and fed to B<cmp>(1)  or B<diff>(1).  "
+"The exit status from B<cmp>(1)  or B<diff>(1)  is preserved."
+msgstr ""
+"Die Dienstprogramme B<xzcmp> und B<xzdiff> führen die Programme B<cmp>(1) "
+"beziehungsweise B<diff>(1) mit Dateien aus, die mittels B<xz>(1), B<lzma>(1), "
+"B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) komprimiert wurden. Alle angegebenen "
+"Optionen werden direkt an B<cmp>(1) oder B<diff>(1) übergeben. Wird nur eine "
+"Datei angegeben, wird diese I<Datei1> (die eine Endung entsprechend eines der "
+"unterstützten Kompressionsformate haben muss) mit der I<Datei1> verglichen, "
+"von der die Kompressionsformat-Endung entfernt wird. Werden zwei Dateien "
+"angegeben, dann werden deren Inhalte (falls nötig, unkomprimiert) an "
+"B<cmp>(1) oder B<diff>(1) weitergeleitet. Der Exit-Status von B<cmp>(1) oder "
+"B<diff>(1) wird dabei bewahrt."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:64
+msgid ""
+"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility with "
+"LZMA Utils."
+msgstr ""
+"Die Namen B<lzcmp> und B<lzdiff> dienen der Abwärtskompatibilität zu den LZMA-"
+"Dienstprogrammen."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:72
+msgid ""
+"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
+"B<zdiff>(1)"
+msgstr ""
+"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
+"B<zdiff>(1)"
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1:77
+msgid ""
+"Messages from the B<cmp>(1)  or B<diff>(1)  programs refer to temporary "
+"filenames instead of those specified."
+msgstr ""
+"Die Meldungen der Programme B<cmp>(1) oder B<diff>(1) können auf temporäre "
+"Dateinamen verweisen anstatt auf die tatsächlich angegebenen Dateinamen."
+
+#. type: TH
+#: ../src/scripts/xzgrep.1:9
+#, no-wrap
+msgid "XZGREP"
+msgstr "XZGREP"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:12
+msgid "xzgrep - search compressed files for a regular expression"
+msgstr "xzgrep - komprimierte Dateien nach einem regulären Ausdruck durchsuchen"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:18
+msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> I<file>..."
+msgstr "B<xzgrep> [I<grep-Optionen>] [B<-e>] I<Muster> I<Dateiname> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:21
+msgid "B<xzegrep> ..."
+msgstr "B<xzegrep> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:24
+msgid "B<xzfgrep> ..."
+msgstr "B<xzfgrep> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:27
+msgid "B<lzgrep> ..."
+msgstr "B<lzgrep> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:30
+msgid "B<lzegrep> ..."
+msgstr "B<lzegrep> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:33
+msgid "B<lzfgrep> ..."
+msgstr "B<lzfgrep> …"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:48
+msgid ""
+"B<xzgrep> invokes B<grep>(1)  on I<files> which may be either uncompressed or "
+"compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or "
+"B<lzop>(1).  All options specified are passed directly to B<grep>(1)."
+msgstr ""
+"B<xzgrep> wendet B<grep>(1) auf I<Dateien> an, die entweder unkomprimiert "
+"oder mit B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) "
+"komprimiert sein können. Alle angegebenen Optionen werden direkt an "
+"B<grep>(1) übergeben."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:60
+msgid ""
+"If no I<file> is specified, then standard input is decompressed if necessary "
+"and fed to B<grep>(1).  When reading from standard input, B<gzip>(1), "
+"B<bzip2>(1), and B<lzop>(1)  compressed files are not supported."
+msgstr ""
+"Wenn keine I<Datei> angegeben ist, wird die Standardeingabe dekomprimiert "
+"(falls nötig) und an B<grep> übergeben. Beim Lesen aus der Standardeingabe "
+"keine Dateien unterstützt, die mit B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) "
+"komprimiert sind."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:79
+msgid ""
+"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<egrep>(1)  or "
+"B<fgrep>(1)  is used instead of B<grep>(1).  The same applies to names "
+"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
+"compatibility with LZMA Utils."
+msgstr ""
+"Wenn B<xzgrep> als B<xzegrep> oder B<xzfgrep> aufgerufen wird, dann wird "
+"B<egrep>(1) oder B<fgrep>(1) anstelle von B<grep>(1) verwendet. Genauso "
+"verhalten sich die Befehle B<lzgrep>, B<lzegrep> und B<lzfgrep>, die die "
+"Abwärtskompatibilität zu den LZMA-Dienstprogrammen gewährleisten."
+
+#. type: TP
+#: ../src/scripts/xzgrep.1:81
+#, no-wrap
+msgid "B<GREP>"
+msgstr "B<GREP>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:92
+msgid ""
+"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
+"B<grep>(1), B<egrep>(1), or B<fgrep>(1)."
+msgstr ""
+"Wenn die Umgebungsvariable B<GREP> gesetzt ist, verwendet B<xzgrep> deren "
+"Inhalt anstelle von B<grep>(1), B<egrep>(1) oder B<fgrep>(1)."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1:98
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)"
+msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)"
+
+#. type: TH
+#: ../src/scripts/xzless.1:10
+#, no-wrap
+msgid "XZLESS"
+msgstr "XZLESS"
+
+#. type: TH
+#: ../src/scripts/xzless.1:10
+#, no-wrap
+msgid "2010-09-27"
+msgstr "27. September 2010"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:13
+msgid "xzless, lzless - view xz or lzma compressed (text) files"
+msgstr ""
+"xzless, lzless - mit xz oder lzma komprimierte (Text-)Dateien betrachten"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:16
+msgid "B<xzless> [I<file>...]"
+msgstr "B<xzless> [I<Datei> …]"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:19
+msgid "B<lzless> [I<file>...]"
+msgstr "B<lzless> [I<Datei> …]"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:31
+msgid ""
+"B<xzless> is a filter that displays text from compressed files to a "
+"terminal.  It works on files compressed with B<xz>(1)  or B<lzma>(1).  If no "
+"I<files> are given, B<xzless> reads from standard input."
+msgstr ""
+"B<xzless> ist ein Filter, der Text aus komprimierten Dateien in einem "
+"Terminal anzeigt. Es funktioniert mit Dateien, die mit B<xz>(1) oder "
+"B<lzma>(1) komprimiert sind. Falls keine I<files> angegeben sind, liest "
+"B<xzless> aus der Standardeingabe."
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:48
+msgid ""
+"B<xzless> uses B<less>(1)  to present its output.  Unlike B<xzmore>, its "
+"choice of pager cannot be altered by setting an environment variable.  "
+"Commands are based on both B<more>(1)  and B<vi>(1)  and allow back and forth "
+"movement and searching.  See the B<less>(1)  manual for more information."
+msgstr ""
+"B<xzless> verwendet B<less>(1) zur Darstellung der Ausgabe. Im Gegensatz zu "
+"B<xzmore> können Sie das zu verwendende Textanzeigeprogramm nicht durch "
+"Setzen einer Umgebungsvariable ändern. Die Befehle basieren auf B<more>(1) "
+"und B<vi>(1) und ermöglichen Vorwärts- und Rückwärtssprünge sowie "
+"Suchvorgänge. In der Handbuchseite zu B<less>(1) finden Sie weiter "
+"Information."
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:52
+msgid ""
+"The command named B<lzless> is provided for backward compatibility with LZMA "
+"Utils."
+msgstr ""
+"Der Befehl B<lzless> dient der Abwärtskompatibilität zu den LZMA-"
+"Dienstprogrammen."
+
+#. type: TP
+#: ../src/scripts/xzless.1:53
+#, no-wrap
+msgid "B<LESSMETACHARS>"
+msgstr "B<LESSMETACHARS>"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:59
+msgid ""
+"A list of characters special to the shell.  Set by B<xzless> unless it is "
+"already set in the environment."
+msgstr ""
+"Dies enthält eine Zeichenliste mit Bezug zur Shell. Wenn diese Variable nicht "
+"bereits gesetzt ist, wird sie durch B<xzless> gesetzt."
+
+#. type: TP
+#: ../src/scripts/xzless.1:59
+#, no-wrap
+msgid "B<LESSOPEN>"
+msgstr "B<LESSOPEN>"
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:65
+msgid ""
+"Set to a command line to invoke the B<xz>(1)  decompressor for preprocessing "
+"the input files to B<less>(1)."
+msgstr ""
+"Dies ist auf die Befehlszeile zum Aufruf von B<xz>(1) gesetzt, die zur "
+"Vorverarbeitung der Eingabedateien für B<less>(1) nötig ist."
+
+#. type: Plain text
+#: ../src/scripts/xzless.1:69
+msgid "B<less>(1), B<xz>(1), B<xzmore>(1), B<zless>(1)"
+msgstr "B<less>(1), B<xz>(1), B<xzmore>(1), B<zless>(1)"
+
+#. type: TH
+#: ../src/scripts/xzmore.1:7
+#, no-wrap
+msgid "XZMORE"
+msgstr "XZMORE"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:10
+msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
+msgstr "xzmore, lzmore - mit xz oder lzma komprimierte (Text-)Dateien lesen"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:13
+msgid "B<xzmore> [I<file...>]"
+msgstr "B<xzmore> [I<Datei …>]"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:16
+msgid "B<lzmore> [I<file...>]"
+msgstr "B<lzmore> [I<Datei …>]"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:24
+msgid ""
+"B<xzmore> is a filter which allows examination of B<xz>(1)  or B<lzma>(1)  "
+"compressed text files one screenful at a time on a soft-copy terminal."
+msgstr ""
+"B<xzmore> ist ein Filter zur seitenweisen Anzeige von Textdateien in einem "
+"Terminal, die mit B<xz>(1) oder B<lzma>(1) komprimiert wurden."
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:33
+msgid ""
+"To use a pager other than the default B<more,> set environment variable "
+"B<PAGER> to the name of the desired program.  The name B<lzmore> is provided "
+"for backward compatibility with LZMA Utils."
+msgstr ""
+"Um ein anderes Textanzeigeprogramm als den voreingestellten B<more> zu "
+"verwenden, setzen Sie die Umgebungsvariable B<PAGER> auf das gewünschte "
+"Programm. Der Name B<lzmore> dient der Abwärtskompatibilität zu den LZMA-"
+"Dienstprogrammen."
+
+#. type: TP
+#: ../src/scripts/xzmore.1:33
+#, no-wrap
+msgid "B<e> or B<q>"
+msgstr "B<e> oder B<q>"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:40
+msgid ""
+"When the prompt --More--(Next file: I<file>)  is printed, this command causes "
+"B<xzmore> to exit."
+msgstr ""
+"Wenn die Zeile --Mehr--(Nächste Datei: I<Datei>) angezeigt wird, wird "
+"B<xzmore> mit diesem Befehl beendet."
+
+#. type: TP
+#: ../src/scripts/xzmore.1:40
+#, no-wrap
+msgid "B<s>"
+msgstr "B<s>"
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:47
+msgid ""
+"When the prompt --More--(Next file: I<file>)  is printed, this command causes "
+"B<xzmore> to skip the next file and continue."
+msgstr ""
+"Wenn die Zeile --Mehr--(Nächste Datei: I<Datei>) angezeigt wird, springt "
+"B<xzmore> zur nächsten Datei und zeigt diese an."
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:51
+msgid ""
+"For list of keyboard commands supported while actually viewing the content of "
+"a file, refer to manual of the pager you use, usually B<more>(1)."
+msgstr ""
+"Eine Liste der bei der Betrachtung von Dateiinhalten verfügbaren "
+"Tastaturbefehle finden Sie in der Handbuchseite des verwendeten "
+"Textanzeigeprogramms, meist B<more>(1)."
+
+#. type: Plain text
+#: ../src/scripts/xzmore.1:55
+msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
+msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"

+ 14 - 0
xz.mod/xz/po4a/po4a.conf

@@ -0,0 +1,14 @@
+# To add a new language, add it to po4a_langs and run "update-po"
+# to get a new .po file. After translating the .po file, run
+# "update-po" again to generate the translated man pages.
+
+[po4a_langs] de
+[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 - 0
xz.mod/xz/po4a/update-po

@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+#############################################################################
+#
+# Updates xz-man.pot and the *.po files, and generates translated man pages.
+# These are done using the program po4a. If po4a is missing, it is still
+# possible to build the package without translated man pages.
+#
+#############################################################################
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+#############################################################################
+
+if type po4a > /dev/null 2>&1; then
+	:
+else
+	echo "po4a/update-po: The program 'po4a' was not found." >&2
+	echo "po4a/update-po: Translated man pages were not generated." >&2
+	exit 1
+fi
+
+if test ! -f po4a.conf; then
+	cd `dirname "$0"` || exit 1
+	if test ! -f po4a.conf; then
+		echo "update-po: Error: Cannot find po4a.conf." >&2
+		exit 1
+	fi
+fi
+
+PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1
+
+# Using --force to get up-to-date version numbers in the output files
+# when nothing else has changed. This makes it slower but it's fine
+# as long as this isn't run every time when "make" is run at the
+# top level directory. (po4a isn't super-fast even without --force).
+set -x
+po4a --force --verbose \
+	--package-name="XZ Utils" \
+	--package-version="$PACKAGE_VERSION" \
+	--copyright-holder="This file is put in the public domain." \
+	po4a.conf

+ 42 - 0
xz.mod/xz/src/Makefile.am

@@ -0,0 +1,42 @@
+##
+## Author: Lasse Collin
+##
+## This file has been put into the public domain.
+## You can do whatever you want with this file.
+##
+
+SUBDIRS = liblzma xzdec
+
+if COND_XZ
+SUBDIRS += xz
+endif
+
+if COND_LZMAINFO
+SUBDIRS += lzmainfo
+endif
+
+if COND_SCRIPTS
+SUBDIRS += scripts
+endif
+
+EXTRA_DIST = \
+	common/common_w32res.rc \
+	common/mythread.h \
+	common/sysdefs.h \
+	common/tuklib_common.h \
+	common/tuklib_config.h \
+	common/tuklib_cpucores.c \
+	common/tuklib_cpucores.h \
+	common/tuklib_exit.c \
+	common/tuklib_exit.h \
+	common/tuklib_gettext.h \
+	common/tuklib_integer.h \
+	common/tuklib_mbstr_fw.c \
+	common/tuklib_mbstr.h \
+	common/tuklib_mbstr_width.c \
+	common/tuklib_open_stdxxx.c \
+	common/tuklib_open_stdxxx.h \
+	common/tuklib_physmem.c \
+	common/tuklib_physmem.h \
+	common/tuklib_progname.c \
+	common/tuklib_progname.h

+ 52 - 0
xz.mod/xz/src/common/common_w32res.rc

@@ -0,0 +1,52 @@
+/*
+ * Author: Lasse Collin
+ *
+ * This file has been put into the public domain.
+ * You can do whatever you want with this file.
+ */
+
+#include <winresrc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#define LZMA_H_INTERNAL
+#define LZMA_H_INTERNAL_RC
+#include "lzma/version.h"
+
+#ifndef MY_BUILD
+# define MY_BUILD 0
+#endif
+#define MY_VERSION LZMA_VERSION_MAJOR,LZMA_VERSION_MINOR,LZMA_VERSION_PATCH,MY_BUILD
+
+#define MY_FILENAME    MY_NAME MY_SUFFIX
+#define MY_COMPANY     "The Tukaani Project <https://tukaani.org/>"
+#define MY_PRODUCT     PACKAGE_NAME " <" PACKAGE_URL ">"
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION MY_VERSION
+  PRODUCTVERSION MY_VERSION
+  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+  FILEFLAGS 0
+  FILEOS VOS_NT_WINDOWS32
+  FILETYPE MY_TYPE
+  FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "CompanyName", MY_COMPANY
+            VALUE "FileDescription", MY_DESC
+            VALUE "FileVersion", LZMA_VERSION_STRING
+            VALUE "InternalName", MY_NAME
+            VALUE "OriginalFilename", MY_FILENAME
+            VALUE "ProductName", MY_PRODUCT
+            VALUE "ProductVersion", LZMA_VERSION_STRING
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END

+ 521 - 0
xz.mod/xz/src/common/mythread.h

@@ -0,0 +1,521 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       mythread.h
+/// \brief      Some threading related helper macros and functions
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef MYTHREAD_H
+#define MYTHREAD_H
+
+#include "sysdefs.h"
+
+// If any type of threading is enabled, #define MYTHREAD_ENABLED.
+#if defined(MYTHREAD_POSIX) || defined(MYTHREAD_WIN95) \
+		|| defined(MYTHREAD_VISTA)
+#	define MYTHREAD_ENABLED 1
+#endif
+
+
+#ifdef MYTHREAD_ENABLED
+
+////////////////////////////////////////
+// Shared between all threading types //
+////////////////////////////////////////
+
+// Locks a mutex for a duration of a block.
+//
+// Perform mythread_mutex_lock(&mutex) in the beginning of a block
+// and mythread_mutex_unlock(&mutex) at the end of the block. "break"
+// may be used to unlock the mutex and jump out of the block.
+// mythread_sync blocks may be nested.
+//
+// Example:
+//
+//     mythread_sync(mutex) {
+//         foo();
+//         if (some_error)
+//             break; // Skips bar()
+//         bar();
+//     }
+//
+// At least GCC optimizes the loops completely away so it doesn't slow
+// things down at all compared to plain mythread_mutex_lock(&mutex)
+// and mythread_mutex_unlock(&mutex) calls.
+//
+#define mythread_sync(mutex) mythread_sync_helper1(mutex, __LINE__)
+#define mythread_sync_helper1(mutex, line) mythread_sync_helper2(mutex, line)
+#define mythread_sync_helper2(mutex, line) \
+	for (unsigned int mythread_i_ ## line = 0; \
+			mythread_i_ ## line \
+				? (mythread_mutex_unlock(&(mutex)), 0) \
+				: (mythread_mutex_lock(&(mutex)), 1); \
+			mythread_i_ ## line = 1) \
+		for (unsigned int mythread_j_ ## line = 0; \
+				!mythread_j_ ## line; \
+				mythread_j_ ## line = 1)
+#endif
+
+
+#if !defined(MYTHREAD_ENABLED)
+
+//////////////////
+// No threading //
+//////////////////
+
+// Calls the given function once. This isn't thread safe.
+#define mythread_once(func) \
+do { \
+	static bool once_ = false; \
+	if (!once_) { \
+		func(); \
+		once_ = true; \
+	} \
+} while (0)
+
+
+#if !(defined(_WIN32) && !defined(__CYGWIN__))
+// Use sigprocmask() to set the signal mask in single-threaded programs.
+#include <signal.h>
+
+static inline void
+mythread_sigmask(int how, const sigset_t *restrict set,
+		sigset_t *restrict oset)
+{
+	int ret = sigprocmask(how, set, oset);
+	assert(ret == 0);
+	(void)ret;
+}
+#endif
+
+
+#elif defined(MYTHREAD_POSIX)
+
+////////////////////
+// Using pthreads //
+////////////////////
+
+#include <sys/time.h>
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+#include <errno.h>
+
+#define MYTHREAD_RET_TYPE void *
+#define MYTHREAD_RET_VALUE NULL
+
+typedef pthread_t mythread;
+typedef pthread_mutex_t mythread_mutex;
+
+typedef struct {
+	pthread_cond_t cond;
+#ifdef HAVE_CLOCK_GETTIME
+	// Clock ID (CLOCK_REALTIME or CLOCK_MONOTONIC) associated with
+	// the condition variable.
+	clockid_t clk_id;
+#endif
+} mythread_cond;
+
+typedef struct timespec mythread_condtime;
+
+
+// Calls the given function once in a thread-safe way.
+#define mythread_once(func) \
+	do { \
+		static pthread_once_t once_ = PTHREAD_ONCE_INIT; \
+		pthread_once(&once_, &func); \
+	} while (0)
+
+
+// Use pthread_sigmask() to set the signal mask in multi-threaded programs.
+// Do nothing on OpenVMS since it lacks pthread_sigmask().
+static inline void
+mythread_sigmask(int how, const sigset_t *restrict set,
+		sigset_t *restrict oset)
+{
+#ifdef __VMS
+	(void)how;
+	(void)set;
+	(void)oset;
+#else
+	int ret = pthread_sigmask(how, set, oset);
+	assert(ret == 0);
+	(void)ret;
+#endif
+}
+
+
+// Creates a new thread with all signals blocked. Returns zero on success
+// and non-zero on error.
+static inline int
+mythread_create(mythread *thread, void *(*func)(void *arg), void *arg)
+{
+	sigset_t old;
+	sigset_t all;
+	sigfillset(&all);
+
+	mythread_sigmask(SIG_SETMASK, &all, &old);
+	const int ret = pthread_create(thread, NULL, func, arg);
+	mythread_sigmask(SIG_SETMASK, &old, NULL);
+
+	return ret;
+}
+
+// Joins a thread. Returns zero on success and non-zero on error.
+static inline int
+mythread_join(mythread thread)
+{
+	return pthread_join(thread, NULL);
+}
+
+
+// Initiatlizes a mutex. Returns zero on success and non-zero on error.
+static inline int
+mythread_mutex_init(mythread_mutex *mutex)
+{
+	return pthread_mutex_init(mutex, NULL);
+}
+
+static inline void
+mythread_mutex_destroy(mythread_mutex *mutex)
+{
+	int ret = pthread_mutex_destroy(mutex);
+	assert(ret == 0);
+	(void)ret;
+}
+
+static inline void
+mythread_mutex_lock(mythread_mutex *mutex)
+{
+	int ret = pthread_mutex_lock(mutex);
+	assert(ret == 0);
+	(void)ret;
+}
+
+static inline void
+mythread_mutex_unlock(mythread_mutex *mutex)
+{
+	int ret = pthread_mutex_unlock(mutex);
+	assert(ret == 0);
+	(void)ret;
+}
+
+
+// Initializes a condition variable.
+//
+// Using CLOCK_MONOTONIC instead of the default CLOCK_REALTIME makes the
+// timeout in pthread_cond_timedwait() work correctly also if system time
+// is suddenly changed. Unfortunately CLOCK_MONOTONIC isn't available
+// everywhere while the default CLOCK_REALTIME is, so the default is
+// used if CLOCK_MONOTONIC isn't available.
+//
+// If clock_gettime() isn't available at all, gettimeofday() will be used.
+static inline int
+mythread_cond_init(mythread_cond *mycond)
+{
+#ifdef HAVE_CLOCK_GETTIME
+	// NOTE: HAVE_DECL_CLOCK_MONOTONIC is always defined to 0 or 1.
+#	if defined(HAVE_PTHREAD_CONDATTR_SETCLOCK) && HAVE_DECL_CLOCK_MONOTONIC
+	struct timespec ts;
+	pthread_condattr_t condattr;
+
+	// POSIX doesn't seem to *require* that pthread_condattr_setclock()
+	// will fail if given an unsupported clock ID. Test that
+	// CLOCK_MONOTONIC really is supported using clock_gettime().
+	if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0
+			&& pthread_condattr_init(&condattr) == 0) {
+		int ret = pthread_condattr_setclock(
+				&condattr, CLOCK_MONOTONIC);
+		if (ret == 0)
+			ret = pthread_cond_init(&mycond->cond, &condattr);
+
+		pthread_condattr_destroy(&condattr);
+
+		if (ret == 0) {
+			mycond->clk_id = CLOCK_MONOTONIC;
+			return 0;
+		}
+	}
+
+	// If anything above fails, fall back to the default CLOCK_REALTIME.
+	// POSIX requires that all implementations of clock_gettime() must
+	// support at least CLOCK_REALTIME.
+#	endif
+
+	mycond->clk_id = CLOCK_REALTIME;
+#endif
+
+	return pthread_cond_init(&mycond->cond, NULL);
+}
+
+static inline void
+mythread_cond_destroy(mythread_cond *cond)
+{
+	int ret = pthread_cond_destroy(&cond->cond);
+	assert(ret == 0);
+	(void)ret;
+}
+
+static inline void
+mythread_cond_signal(mythread_cond *cond)
+{
+	int ret = pthread_cond_signal(&cond->cond);
+	assert(ret == 0);
+	(void)ret;
+}
+
+static inline void
+mythread_cond_wait(mythread_cond *cond, mythread_mutex *mutex)
+{
+	int ret = pthread_cond_wait(&cond->cond, mutex);
+	assert(ret == 0);
+	(void)ret;
+}
+
+// Waits on a condition or until a timeout expires. If the timeout expires,
+// non-zero is returned, otherwise zero is returned.
+static inline int
+mythread_cond_timedwait(mythread_cond *cond, mythread_mutex *mutex,
+		const mythread_condtime *condtime)
+{
+	int ret = pthread_cond_timedwait(&cond->cond, mutex, condtime);
+	assert(ret == 0 || ret == ETIMEDOUT);
+	return ret;
+}
+
+// Sets condtime to the absolute time that is timeout_ms milliseconds
+// in the future. The type of the clock to use is taken from cond.
+static inline void
+mythread_condtime_set(mythread_condtime *condtime, const mythread_cond *cond,
+		uint32_t timeout_ms)
+{
+	condtime->tv_sec = timeout_ms / 1000;
+	condtime->tv_nsec = (timeout_ms % 1000) * 1000000;
+
+#ifdef HAVE_CLOCK_GETTIME
+	struct timespec now;
+	int ret = clock_gettime(cond->clk_id, &now);
+	assert(ret == 0);
+	(void)ret;
+
+	condtime->tv_sec += now.tv_sec;
+	condtime->tv_nsec += now.tv_nsec;
+#else
+	(void)cond;
+
+	struct timeval now;
+	gettimeofday(&now, NULL);
+
+	condtime->tv_sec += now.tv_sec;
+	condtime->tv_nsec += now.tv_usec * 1000L;
+#endif
+
+	// tv_nsec must stay in the range [0, 999_999_999].
+	if (condtime->tv_nsec >= 1000000000L) {
+		condtime->tv_nsec -= 1000000000L;
+		++condtime->tv_sec;
+	}
+}
+
+
+#elif defined(MYTHREAD_WIN95) || defined(MYTHREAD_VISTA)
+
+/////////////////////
+// Windows threads //
+/////////////////////
+
+#define WIN32_LEAN_AND_MEAN
+#ifdef MYTHREAD_VISTA
+#	undef _WIN32_WINNT
+#	define _WIN32_WINNT 0x0600
+#endif
+#include <windows.h>
+#include <process.h>
+
+#define MYTHREAD_RET_TYPE unsigned int __stdcall
+#define MYTHREAD_RET_VALUE 0
+
+typedef HANDLE mythread;
+typedef CRITICAL_SECTION mythread_mutex;
+
+#ifdef MYTHREAD_WIN95
+typedef HANDLE mythread_cond;
+#else
+typedef CONDITION_VARIABLE mythread_cond;
+#endif
+
+typedef struct {
+	// Tick count (milliseconds) in the beginning of the timeout.
+	// NOTE: This is 32 bits so it wraps around after 49.7 days.
+	// Multi-day timeouts may not work as expected.
+	DWORD start;
+
+	// Length of the timeout in milliseconds. The timeout expires
+	// when the current tick count minus "start" is equal or greater
+	// than "timeout".
+	DWORD timeout;
+} mythread_condtime;
+
+
+// mythread_once() is only available with Vista threads.
+#ifdef MYTHREAD_VISTA
+#define mythread_once(func) \
+	do { \
+		static INIT_ONCE once_ = INIT_ONCE_STATIC_INIT; \
+		BOOL pending_; \
+		if (!InitOnceBeginInitialize(&once_, 0, &pending_, NULL)) \
+			abort(); \
+		if (pending_) \
+			func(); \
+		if (!InitOnceComplete(&once, 0, NULL)) \
+			abort(); \
+	} while (0)
+#endif
+
+
+// mythread_sigmask() isn't available on Windows. Even a dummy version would
+// make no sense because the other POSIX signal functions are missing anyway.
+
+
+static inline int
+mythread_create(mythread *thread,
+		unsigned int (__stdcall *func)(void *arg), void *arg)
+{
+	uintptr_t ret = _beginthreadex(NULL, 0, func, arg, 0, NULL);
+	if (ret == 0)
+		return -1;
+
+	*thread = (HANDLE)ret;
+	return 0;
+}
+
+static inline int
+mythread_join(mythread thread)
+{
+	int ret = 0;
+
+	if (WaitForSingleObject(thread, INFINITE) != WAIT_OBJECT_0)
+		ret = -1;
+
+	if (!CloseHandle(thread))
+		ret = -1;
+
+	return ret;
+}
+
+
+static inline int
+mythread_mutex_init(mythread_mutex *mutex)
+{
+	InitializeCriticalSection(mutex);
+	return 0;
+}
+
+static inline void
+mythread_mutex_destroy(mythread_mutex *mutex)
+{
+	DeleteCriticalSection(mutex);
+}
+
+static inline void
+mythread_mutex_lock(mythread_mutex *mutex)
+{
+	EnterCriticalSection(mutex);
+}
+
+static inline void
+mythread_mutex_unlock(mythread_mutex *mutex)
+{
+	LeaveCriticalSection(mutex);
+}
+
+
+static inline int
+mythread_cond_init(mythread_cond *cond)
+{
+#ifdef MYTHREAD_WIN95
+	*cond = CreateEvent(NULL, FALSE, FALSE, NULL);
+	return *cond == NULL ? -1 : 0;
+#else
+	InitializeConditionVariable(cond);
+	return 0;
+#endif
+}
+
+static inline void
+mythread_cond_destroy(mythread_cond *cond)
+{
+#ifdef MYTHREAD_WIN95
+	CloseHandle(*cond);
+#else
+	(void)cond;
+#endif
+}
+
+static inline void
+mythread_cond_signal(mythread_cond *cond)
+{
+#ifdef MYTHREAD_WIN95
+	SetEvent(*cond);
+#else
+	WakeConditionVariable(cond);
+#endif
+}
+
+static inline void
+mythread_cond_wait(mythread_cond *cond, mythread_mutex *mutex)
+{
+#ifdef MYTHREAD_WIN95
+	LeaveCriticalSection(mutex);
+	WaitForSingleObject(*cond, INFINITE);
+	EnterCriticalSection(mutex);
+#else
+	BOOL ret = SleepConditionVariableCS(cond, mutex, INFINITE);
+	assert(ret);
+	(void)ret;
+#endif
+}
+
+static inline int
+mythread_cond_timedwait(mythread_cond *cond, mythread_mutex *mutex,
+		const mythread_condtime *condtime)
+{
+#ifdef MYTHREAD_WIN95
+	LeaveCriticalSection(mutex);
+#endif
+
+	DWORD elapsed = GetTickCount() - condtime->start;
+	DWORD timeout = elapsed >= condtime->timeout
+			? 0 : condtime->timeout - elapsed;
+
+#ifdef MYTHREAD_WIN95
+	DWORD ret = WaitForSingleObject(*cond, timeout);
+	assert(ret == WAIT_OBJECT_0 || ret == WAIT_TIMEOUT);
+
+	EnterCriticalSection(mutex);
+
+	return ret == WAIT_TIMEOUT;
+#else
+	BOOL ret = SleepConditionVariableCS(cond, mutex, timeout);
+	assert(ret || GetLastError() == ERROR_TIMEOUT);
+	return !ret;
+#endif
+}
+
+static inline void
+mythread_condtime_set(mythread_condtime *condtime, const mythread_cond *cond,
+		uint32_t timeout)
+{
+	(void)cond;
+	condtime->start = GetTickCount();
+	condtime->timeout = timeout;
+}
+
+#endif
+
+#endif

+ 199 - 0
xz.mod/xz/src/common/sysdefs.h

@@ -0,0 +1,199 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       sysdefs.h
+/// \brief      Common includes, definitions, system-specific things etc.
+///
+/// This file is used also by the lzma command line tool, that's why this
+/// file is separate from common.h.
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef LZMA_SYSDEFS_H
+#define LZMA_SYSDEFS_H
+
+//////////////
+// Includes //
+//////////////
+
+#ifdef HAVE_CONFIG_H
+#	include <config.h>
+#endif
+
+// Get standard-compliant stdio functions under MinGW and MinGW-w64.
+#ifdef __MINGW32__
+#	define __USE_MINGW_ANSI_STDIO 1
+#endif
+
+// size_t and NULL
+#include <stddef.h>
+
+#ifdef HAVE_INTTYPES_H
+#	include <inttypes.h>
+#endif
+
+// C99 says that inttypes.h always includes stdint.h, but some systems
+// don't do that, and require including stdint.h separately.
+#ifdef HAVE_STDINT_H
+#	include <stdint.h>
+#endif
+
+// 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.
+#include <limits.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.
+// Full Autoconf test could be more correct, but this should work well enough.
+// Note that this duplicates some code from lzma.h, but this is better since
+// we can work without inttypes.h thanks to Autoconf tests.
+#ifndef UINT32_C
+#	if UINT_MAX != 4294967295U
+#		error UINT32_C is not defined and unsigned int is not 32-bit.
+#	endif
+#	define UINT32_C(n) n ## U
+#endif
+#ifndef UINT32_MAX
+#	define UINT32_MAX UINT32_C(4294967295)
+#endif
+#ifndef PRIu32
+#	define PRIu32 "u"
+#endif
+#ifndef PRIx32
+#	define PRIx32 "x"
+#endif
+#ifndef PRIX32
+#	define PRIX32 "X"
+#endif
+
+#if ULONG_MAX == 4294967295UL
+#	ifndef UINT64_C
+#		define UINT64_C(n) n ## ULL
+#	endif
+#	ifndef PRIu64
+#		define PRIu64 "llu"
+#	endif
+#	ifndef PRIx64
+#		define PRIx64 "llx"
+#	endif
+#	ifndef PRIX64
+#		define PRIX64 "llX"
+#	endif
+#else
+#	ifndef UINT64_C
+#		define UINT64_C(n) n ## UL
+#	endif
+#	ifndef PRIu64
+#		define PRIu64 "lu"
+#	endif
+#	ifndef PRIx64
+#		define PRIx64 "lx"
+#	endif
+#	ifndef PRIX64
+#		define PRIX64 "lX"
+#	endif
+#endif
+#ifndef UINT64_MAX
+#	define UINT64_MAX UINT64_C(18446744073709551615)
+#endif
+
+// Incorrect(?) SIZE_MAX:
+//   - Interix headers typedef size_t to unsigned long,
+//     but a few lines later define SIZE_MAX to INT32_MAX.
+//   - SCO OpenServer (x86) headers typedef size_t to unsigned int
+//     but define SIZE_MAX to INT32_MAX.
+#if defined(__INTERIX) || defined(_SCO_DS)
+#	undef SIZE_MAX
+#endif
+
+// The code currently assumes that size_t is either 32-bit or 64-bit.
+#ifndef SIZE_MAX
+#	if SIZEOF_SIZE_T == 4
+#		define SIZE_MAX UINT32_MAX
+#	elif SIZEOF_SIZE_T == 8
+#		define SIZE_MAX UINT64_MAX
+#	else
+#		error size_t is not 32-bit or 64-bit
+#	endif
+#endif
+#if SIZE_MAX != UINT32_MAX && SIZE_MAX != UINT64_MAX
+#	error size_t is not 32-bit or 64-bit
+#endif
+
+#include <stdlib.h>
+#include <assert.h>
+
+// Pre-C99 systems lack stdbool.h. All the code in LZMA Utils must be written
+// so that it works with fake bool type, for example:
+//
+//    bool foo = (flags & 0x100) != 0;
+//    bool bar = !!(flags & 0x100);
+//
+// This works with the real C99 bool but breaks with fake bool:
+//
+//    bool baz = (flags & 0x100);
+//
+#ifdef HAVE_STDBOOL_H
+#	include <stdbool.h>
+#else
+#	if ! HAVE__BOOL
+typedef unsigned char _Bool;
+#	endif
+#	define bool _Bool
+#	define false 0
+#	define true 1
+#	define __bool_true_false_are_defined 1
+#endif
+
+// string.h should be enough but let's include strings.h and memory.h too if
+// they exists, since that shouldn't do any harm, but may improve portability.
+#include <string.h>
+
+#ifdef HAVE_STRINGS_H
+#	include <strings.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#	include <memory.h>
+#endif
+
+// As of MSVC 2013, inline and restrict are supported with
+// non-standard keywords.
+#if defined(_WIN32) && defined(_MSC_VER)
+#	ifndef inline
+#		define inline __inline
+#	endif
+#	ifndef restrict
+#		define restrict __restrict
+#	endif
+#endif
+
+////////////
+// Macros //
+////////////
+
+#undef memzero
+#define memzero(s, n) memset(s, 0, n)
+
+// NOTE: Avoid using MIN() and MAX(), because even conditionally defining
+// those macros can cause some portability trouble, since on some systems
+// the system headers insist defining their own versions.
+#define my_min(x, y) ((x) < (y) ? (x) : (y))
+#define my_max(x, y) ((x) > (y) ? (x) : (y))
+
+#ifndef ARRAY_SIZE
+#	define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
+#endif
+
+#if defined(__GNUC__) \
+		&& ((__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4)
+#	define lzma_attr_alloc_size(x) __attribute__((__alloc_size__(x)))
+#else
+#	define lzma_attr_alloc_size(x)
+#endif
+
+#endif

+ 71 - 0
xz.mod/xz/src/common/tuklib_common.h

@@ -0,0 +1,71 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       tuklib_common.h
+/// \brief      Common definitions for tuklib modules
+//
+//  Author:     Lasse Collin
+//
+//  This file has been put into the public domain.
+//  You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef TUKLIB_COMMON_H
+#define TUKLIB_COMMON_H
+
+// The config file may be replaced by a package-specific file.
+// It should include at least stddef.h, stdbool.h, inttypes.h, and limits.h.
+#include "tuklib_config.h"
+
+// TUKLIB_SYMBOL_PREFIX is prefixed to all symbols exported by
+// the tuklib modules. If you use a tuklib module in a library,
+// you should use TUKLIB_SYMBOL_PREFIX to make sure that there
+// are no symbol conflicts in case someone links your library
+// into application that also uses the same tuklib module.
+#ifndef TUKLIB_SYMBOL_PREFIX
+#	define TUKLIB_SYMBOL_PREFIX
+#endif
+
+#define TUKLIB_CAT_X(a, b) a ## b
+#define TUKLIB_CAT(a, b) TUKLIB_CAT_X(a, b)
+
+#ifndef TUKLIB_SYMBOL
+#	define TUKLIB_SYMBOL(sym) TUKLIB_CAT(TUKLIB_SYMBOL_PREFIX, sym)
+#endif
+
+#ifndef TUKLIB_DECLS_BEGIN
+#	ifdef __cplusplus
+#		define TUKLIB_DECLS_BEGIN extern "C" {
+#	else
+#		define TUKLIB_DECLS_BEGIN
+#	endif
+#endif
+
+#ifndef TUKLIB_DECLS_END
+#	ifdef __cplusplus
+#		define TUKLIB_DECLS_END }
+#	else
+#		define TUKLIB_DECLS_END
+#	endif
+#endif
+
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#	define TUKLIB_GNUC_REQ(major, minor) \
+		((__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)) \
+			|| __GNUC__ > (major))
+#else
+#	define TUKLIB_GNUC_REQ(major, minor) 0
+#endif
+
+#if TUKLIB_GNUC_REQ(2, 5)
+#	define tuklib_attr_noreturn __attribute__((__noreturn__))
+#else
+#	define tuklib_attr_noreturn
+#endif
+
+#if (defined(_WIN32) && !defined(__CYGWIN__)) \
+		|| defined(__OS2__) || defined(__MSDOS__)
+#	define TUKLIB_DOSLIKE 1
+#endif
+
+#endif

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini